已经不知道什么时候看到spring-security了,反正第一次接触直接放弃了,没有学的欲望,直觉告诉我,这很TM的难。
近来又觉得无聊所以开始重新看看,顺便就把学会的记录一下,希望能帮助看到的朋友们,当然也希望大家可以和我交流。
一步一步开始正题:
1.最基本的工程(这里推荐一个链接)
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
网友评论