如何在Spring Security登录页面中传递附加参数
我正在尝试从Spring安全性登录页面将数据库名称设置为请求输入参数。目前,我只获得使用security" title="spring security">spring security检索到的用户名SecurityContextHolder.getContext().getAuthentication()。
如何访问在登录页面上设置的其他字段?
回答:
详细阐述@Vacuum的评论
这是一种简单的方法(未经测试,但我相信这会起作用)
1)创建一个新类ExUsernamePasswordAuthenticationFilter,它将扩展默认过滤器并获取其他参数并将其存储在会话中。它看起来像这样:
public class ExUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter { @Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
final String dbValue = request.getParameter("dbParam");
request.getSession().setAttribute("dbValue", dbValue);
return super.attemptAuthentication(request, response);
}
}
2)在你的UserDetailsService实现中,修改你的实现:
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException;获取第1)步中的过滤器提供的会话变量。
3)在你的<http />安全设置中,使用你的自定义过滤器覆盖默认过滤器
<custom-filter ref="beanForYourCustomFilterFromStep1" position="FORM_LOGIN_FILTER"/>以上是 如何在Spring Security登录页面中传递附加参数 的全部内容, 来源链接: utcz.com/qa/436036.html

