然后我们尝试登录,因为之前我们已经设置了用户名密码为user/111111,所以我们提交表单的时候再带上我们的token和验证码。

这时候我们就可以去提交表单了吗,其实还不可以,为啥?因为就算我们登录成功,security默认跳转到/链接,但是又会因为没有权限访问/,所有又会教你去登录,所以我们必须取消原先默认的登录成功之后的操作,根据我们之前分析的流程,登录成功之后会走AuthenticationSuccessHandler,因此在登录之前,我们先去自定义这个登录成功操作类:

@Component
public class LoginSuccessHandler implements AuthenticationSuccessHandler {@AutowiredJwtUtils jwtUtils;@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {response.setContentType("application/json;charset=UTF-8");ServletOutputStream outputStream = response.getOutputStream();// 生成jwt返回String jwt = jwtUtils.generateToken(authentication.getName());response.setHeader(jwtUtils.getHeader(), jwt);Result result = Result.succ("");outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));outputStream.flush();outputStream.close();}
}

登录成功之后我们利用用户名生成jwt,jwtUtils这个工具类我就不贴代码了哈,去看我们项目源码,然后把jwt作为请求头返回回去,名称就叫Authorization哈。我们需要在配置文件中配置一些jwt的一些密钥信息:

  • application.yml
markerhub:jwt:# 加密秘钥secret: f4e2e52034348f86b67cde581c0f9eb5# token有效时长,7天,单位秒expire: 604800header: Authorization

然后我们再security配置中添加上登录成功之后的操作类:

@Autowired
LoginSuccessHandler loginSuccessHandler;
...
# configure代码:
http.cors().and().csrf().disable().formLogin().failureHandler(loginFailureHandler).successHandler(loginSuccessHandler)

然后我们去postman的进行我们的登录测试:

上面我们可以看到,我们已经可以登录成功了。然后去结果的请求头中查看jwt:

搞定,登录成功啦,验证码也正常验证了。

完成登录并生成JWT相关推荐

  1. 10.单点登录原理及JWT实现

    单点登录原理及JWT实现 一.单点登录效果   首先我们看通过一个具体的案例来加深对单点登录的理解.案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=g ...

  2. php读取cookie文件,PHP读取CURL模拟登录时生成Cookie文件的方法,_PHP教程

    PHP读取CURL模拟登录时生成Cookie文件的方法, 本文实例讲述了PHP读取CURL模拟登录时生成Cookie文件的方法.分享给大家供大家参考.具体实现方法如下: 在使用PHP中的CURL模拟登 ...

  3. Python 生成 JWT(json web token) 及 解析方式

    一.关于 jwt 的原理及概念可以自行在网络上搜索了解一下,这里推荐一篇写的比较好的博客 深入了解Json Web Token之概念篇 另附 JWT 的官方文档: https://jwt.io/int ...

  4. Java笔记-使用jjwt生成jwt

    jwt的全称为: JSON WEB TOKEN 程序运行截图如下: maven添加: <dependency><groupId>io.jsonwebtoken</grou ...

  5. java domino 单点登录_Domino单点登录LTPAtoken生成原理

    Domino单点登录LTPAtoken生成原理 一.WebSphere与Domino之间的SSO 首先让我们来了解一下Websphere与Domino之间是怎么完成SSO的: 1.Web用户向Webs ...

  6. 传奇GOM引擎登录器生成配置教程

    传奇GOM引擎登录器生成配置教程 本课教学流程与方法也适用于GEE引擎登录器的配置,略过第一步直接使用版本里自带的登录器配置器即可 我们讲第三课的时候站长已经为VIP学员附带了GOM引擎登录器更新包( ...

  7. 十七.SpringCloud+Security+Oauth2实现微服务授权 -非对称加密生成JWT令牌

    仅做学习使用,老鸟飞过,欢迎交流 前言 在之前的微服务授权方案<SpringCloud+Security+Oauth2实现微服务授权 - 授权服务配置>中我们使用的是Oauth+JWT方式 ...

  8. 【SSH】SSH 免密码登录配置|Secure Shell 免密认证登录|linux 生成密钥

    目录 LINUX SSH免密登录 即看即用 详细说明 免密登录原理 Secure Shell 免密认证登录 linux 生成密钥 windows 生成密钥 目录 LINUX SSH免密登录 即看即用 ...

  9. Day241242.单点登录方案【Jwt令牌、sessionredis、CAS认证服务器】 -springsecurity-jwt-oauth2

    1.单点登录与状态共享方案 随着企业的应用规模不断增大,一个单体应用很难满足用户量增长的需求,这就需要我们将单体应用集群化部署,或者将单体应用微服务化.在这个过程中,就涉及到两个问题: 集群应用之间如 ...

最新文章

  1. Reddit热点 | 想看被打码的羞羞图片怎么办?CNN帮你解决
  2. 收集几个js实现的日期时间控件
  3. What?Java这么神奇的lambda表达式
  4. 李松南:智能全真时代的多媒体技术——关于8K、沉浸式和人工智能的思考
  5. CSS3:CSS3 文本效果
  6. “无法解析外部符号 __security_cookie”问题解决
  7. SQL Server 加密层级
  8. 链客区块链技术面试题目专题(三)
  9. Ubuntu Amarok乱码解决方案
  10. Mac安装和配置Tomcat的教程
  11. js 作为属性的变量
  12. 运维自动化部署Cobbler之服务安装篇
  13. python 修改文件名 修改日期_python实现批量修改文件名
  14. iOS蓝牙开发(一)蓝牙相关基础知识
  15. 基于matlab的双闭环直流调速系统,基于MATLAB的双闭环直流调速系统建模与仿真.PDF...
  16. python符号怎么打_「符号怎么打出来」```这个符号怎么打出来 - seo实验室
  17. 数据挖掘 文本分类(四)批处理分词
  18. jenkins+maven+jmeter.修改jmeter.results.shanhe.me.xsl文件,显示响应信息,请求头等信息.
  19. 计算机的手机储存在哪里,手机wps文件保存在哪里?
  20. 【Codeforces Round #185 (Div. 2) D】Cats Transport

热门文章

  1. Myeclipse使用DB Browser连接数据库错误:OPTION SQL_SELECT_LIMIT=DEFAULT
  2. 深度模拟java动态代理实现机制系类之三
  3. 为 Sublime Text 3059 配置 PHP 编译环境
  4. 把aspx页面输出成xml的方法注意事项
  5. 自动化测试框架实践2--STAF
  6. 图文详解Java环境变量配置方法
  7. UOJ #592. 投放点的选择
  8. asp.net 2.0下用access开发的时候要注意的问题
  9. [转]MSBuild入门
  10. sqlite导入后无法使用