Snailclimb / spring-security-jwt-guide

从零入门 !Spring Security With JWT(含权限验证)后端部分代码。
1.37k stars 437 forks source link

对于登录方面有一些疑问 #32

Open TestLove opened 3 years ago

TestLove commented 3 years ago

我看您的代码,第一次登录时是在controller层对于密码和用户名进行检查.但是在SpringSecurity中似乎是通过过滤器去验证UsernamePasswordToken成功之后才到达controller层执行之后的请求.这样的话SpringSecurity的作用似乎就体现不出来了

carryxiong commented 3 years ago

过滤器UsernamePasswordFilter最后还是走到了那个继承了UserDetailService中loadByUsername方法中,去查数据库,你一步步跟进去可以看到。

TestLove commented 3 years ago

过滤器UsernamePasswordFilter最后还是走到了那个继承了UserDetailService中loadByUsername方法中,去查数据库,你一步步跟进去可以看到。

image 或许我表述的不太清楚,的确最后都调用了loadByUsername方法,可我的意思是进入认证的入口不应该是在Filter(图中绿色)中吗?但demo中却是在请求已经被分发到了相应的controller层方法(图中最右)后才开始进行认证

carryxiong commented 3 years ago

过滤器UsernamePasswordFilter最后还是走到了那个继承了UserDetailService中loadByUsername方法中,去查数据库,你一步步跟进去可以看到。

image 或许我表述的不太清楚,的确最后都调用了loadByUsername方法,可我的意思是进入认证的入口不应该是在Filter(图中绿色)中吗?但demo中却是在请求已经被分发到了相应的controller层方法(图中最右)后才开始进行认证

但是默认实现查数据那部分代码应该也是业务代码了吧,loadByUsername应该是在业务类里面。你还是进入到里面了。 这些拦截器我记得只要有一个可以拦截就可以了,你自己可以实现怎么去拦截,就算你一个拦截器都没过,也会有个默认的匿名拦截器,去拦截,然后处理token,最后都是会那个usernamepasswordtoken上。