美文网首页
Spring-Security-Oauth2踩坑笔记

Spring-Security-Oauth2踩坑笔记

作者: 清拂影 | 来源:发表于2019-10-30 16: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

    相关文章

      网友评论

          本文标题:Spring-Security-Oauth2踩坑笔记

          本文链接:https://www.haomeiwen.com/subject/nlzovctx.html