上一篇跳转地址
看知道:SpringSecurity,oauth2.0,SpringSocial第三方登录及jwt验证(2)zhuanlan.zhihu.com下面讲的主要是token的生成,以及验证用户和验证用户权限的一些代码
我们先来讲一下普通的token生成:
首先就是要实现oauth2认证服务器,只要在类上加上@EnableAuthorizationServer这个注解即可,我们需要重新编写我们自己的认证服务器,就要继承AuthorizationServerConfigurerAdapter这个父类重新里面的方法
@Configuration
重写第一个Config是把验证用户的方法给换成自己的验证方法,以及将token生成后存进redis。第二个就是解决一个springSecurity在最新版升级后,默认把之前的明文密码方式给去掉了的一个报错,第三个就是客户端的一些配置,就是会有哪些系统来访问我们这些应用,这里我直接通过数据去查找。
CREATE
然后我们可以使用postman测试一些,下面这两个就是你数据库存的client_id和client_secret
以表单提交的方式添加三个参数grant_type='password'表示密码模式认证
之后我们可以找一个方法测试一下
我们拿着生成好的token去访问,第一个接口是访问成功了,第二个由于我加了权限认证而登录人没有这个权限 导致不允许访问。同样我们也可以拿着refresh_token去刷新token。之前的时间是3287,这个token过期时间也是从数据库获取的。
我们可以看到token重新生成了,接着我们需要把token存进redis中,因为对于这种访问频繁的数据我们可以减少维护。
@Configuration
这样生成的token就可以存到redis中了。
下面我来说一下使用jwt(Json Web Session)
上面我们说了生成token,一旦存储的token的服务挂掉了,而token又是根据UUID生成的一串无意义的字符串,这时候我们可以使用jwt,因为他是包含了用户的信息的一个令牌,即使存储令牌的访问挂了,我们也可以通过解析jwt来获取用户信息,同时也支持可拓展型,就是生成你需要的信息
/***
我们可以通过实现TokenEnhancer这个类生成JWT时加入一些扩展信息
public
最后在MyAuthorizationServerConfig类中修改一下之前的代码,就能生成jwt了。
/**
我们可以同时解析jwt来获取用户信息,可以看到我们拓展的信息也加到jwt中了。
使用token和jwt的生成令牌的代码就这些了,有什么不对的可以评论区评论,谢谢,下次继续更新第三方登录,今天有点烦,哈哈哈!!!
源码已上传
https://github.com/yaozuowei/SpringSecuritygithub.com未完待续...