Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
326 views
in Technique[技术] by (71.8m points)

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...