Spring-Security-Oauth2踩坑笔记

2019-10-30  本文已影响0人  清拂影

已经不知道什么时候看到spring-security了,反正第一次接触直接放弃了,没有学的欲望,直觉告诉我,这很TM的难。

近来又觉得无聊所以开始重新看看,顺便就把学会的记录一下,希望能帮助看到的朋友们,当然也希望大家可以和我交流。

一步一步开始正题:

1.最基本的工程(这里推荐一个链接)

https://www.funtl.com/zh/spring-security-oauth2/%E5%88%9B%E5%BB%BA%E6%A1%88%E4%BE%8B%E5%B7%A5%E7%A8%8B%E9%A1%B9%E7%9B%AE.html#%E6%9C%AC%E8%8A%82%E8%A7%86%E9%A2%91

2.使用数据库表中的用户和client

这里将使用密码模式,需要请求的参数是client_id,client_secret,grant_type,username,password,使用上面链接的教程确实可以从数据库获取,但是表名和字段名这些不能改变。而我一开始就是想使用我自定义的数据库表结构,于是开始了对这个小功能探索之路。

首先能就是程序执行起来之后的的Endpoints,/oauth/token路径的方法在TokenEndpoints.class中:

从红色标记地方进入TokenGranter.class的一个实现类 AbstractTokenGranter.class:

从这里可以看到,这里调用了一个clientDetailsService.loadClientByClientId()方法来获取client表里的数据,于是我定义了一个类实现ClientDetailsService这个类,运行后果然从我自己建的表中取到了数据。这个时候我就在想,那是不是也有一个UserDetailsService.class的类来获取用户信息呢?于是我直接搜了下这个名字,还真有!并且该接口中有个loadUserByUsername()的方法,那绝对没错了。

完成自己的实现后再做如下配置:

启动服务器,使用postman访问/oauth/token:

可以看到已经可以获取到token,并且使用自己的自定义表结构。

第一次写文章,说实话还是有点紧张,希望可以帮助到一些需要的人,也希望大家可以多多和我探讨,给我意见或者建议,有什么不对的还麻烦大家指出来,谢谢!!

后续还会继续写些相关的踩坑经历,并更新下踩坑代码

https://github.com/bltccccz/springboot-demo.git

https://gitee.com/ridersccz/springboot-demo.git

上一篇下一篇

猜你喜欢

热点阅读