请问Spring Security怎么实现普通用户登录?

请问大神们,Spring Security怎么实现普通用户登录?

管理员表与普通用户是不同的表,表结构也不相同。登录页面与登录后的页面也不同,请问应该怎么弄呀?

百度了好多方案,没有太详细的,最后也没有成功。项目是前后端分离的。请大神们指教一下,最好详细一点或者有详细的教程链接或开源项目可以参考。谢谢啦!

阅读 3k
1 个回答

最近正好有在看,但这个不是一两句话能说完的,基本的步骤就是:

  • 前后端分别继承UsernamePasswordAuthenticationToken,这个主要是是登录时组装数据用,而且为下方的provider提供support依据
  • 前后端分别继承DaoAuthenticationProvider,这个是最主要的的,里面的authenticate方法就是验证方法,你可以自定义它,也可以只指定用哪个UserDetailsService,就会自动从不同的表中获取数据了。
  • 前后端分别继承UserDetailsService,这个就是主要调用loadUserByUsername从不同表取数据
  • 前后端分别继承UserDetails,对应前后端不同表
  • 其它的token过滤器什么的配置。
  • 然后是WebSecurityConfigurerAdapter中的配置,将上方的provider配置进去,然后是不要用formLogin()了,这样就不会走UsernamePasswordAuthenticationFilter,你就可以随便在一个接口中直接通过authenticationManager.authenticate()方法来进行登录,这样就能区分前后端不同的入口了。

这里有个比较详细的参考:

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题