ShawnyXiao / SpringBoot-MyBatis

A REST back-end framework, integrated by Spring Boot, MyBatis and Spring Security OAuth
MIT License
368 stars 177 forks source link

向授权服务器请求访问令牌时passWord如何处理 #2

Closed zhuangqi closed 7 years ago

zhuangqi commented 7 years ago

我看到用 向服务器请求令牌时: curl http://localhost:8080/oauth/token -X POST -u client:fucksecurity -d "grant_type=password&username=shawn&password=fucksecurity"

服务器UserDetailsService的loadUserByUsername中只根据用户名从数据库中查找出了该用户,然而并没有进行密码校验,请问如何获取请求令牌时的password

假设可以获取到password,获取password后在loadUserByUsername验证秘密,如果秘密错误抛出异常,这种做法对吗

oneone1995 commented 7 years ago

@zhuangqi 请求token的时候是需要同时带上username、password和OAuth2授权模式才能请求到token的。如果username和password不匹配是不可能能请求到令牌的。密码错误是直接返回错误的response的,即在请求token的时候就已经验证password了 如果你想获取当前登录的用户信息(已经登录后),可以用下面的代码: CustomUserDetails currentUser = (CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

zhuangqi commented 7 years ago

@oneone1995 谢谢你解释了我的疑惑,你的做法是对的,或许我要重新整理下OAuth的思路