【发布时间】:2015-09-25 14:47:19
【问题描述】:
我正在 springboot 中编写一个程序,用户可以通过用户名/密码的组合以两种方式访问应用程序,或者使用位于单独表中的单个唯一 16 位字母数字字符。 我很乐意使用用户名/密码的组合或一次使用 16 位字符来记录用户。但我需要的是能够在基于用户和基于字符的登录之间切换。我已经考虑过基于过滤器的方法,但不确定如何开始它,任何人都可以指出我正确的方向。 我想要的是这样的:-
if(request.getParameter("userType").equals("userbased")){
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username,password,enabled from user where username=?")
.authoritiesByUsernameQuery(
"SELECT u.username,r.role FROM user u INNER JOIN user_role ur ON u.id = ur.user_id INNER JOIN role r ON ur.role_id = r.id WHERE u.username=?; ");
}
else if(request.getParameter("userType").equals("tokenNo")){
//token based login logic with structure same as above
}
【问题讨论】:
-
不,这不是你想要的。只需为唯一编号而不是用户名/密码组合添加一个过滤器,该过滤器应该返回一个
AuthenticationToken,接下来你需要一个知道如何处理它的AuthenticationProvider。配置它并完成。
标签: spring spring-mvc spring-security spring-boot