[英]Dynamic Configuration of Spring Security form-login attributes
使用表单登录进行身份验证。 我需要能够从我们用于配置应用程序其他方面的数据库表配置failure-url和success-url。
我对用户进行身份验证的应用程序是从可能位于此服务器或其他服务器上的其他应用程序链接的,我需要在那里失败或在用户注销时去那里。
<form-login authentication-success-handler-ref="authenticationSuccessHandler"
always-use-default-target="true"
authentication-failure-url="**/failureurl.aspx**"
default-target-url="/home/configuration"/>
<logout logout-success-url="**/successurl.aspx**" invalidate-session="true"/>
我如何动态更改这些属性?
我不认为你可以动态配置它们 - 你最好指向读取数据库属性的控制器方法,然后重定向到适当的页面。
@RequestMapping(value = {"", "/", "/index"}, method = RequestMethod.GET)
public ModelAndView redirectToHomepage(HttpServletRequest request) {
// If not logged in, then go to the landing page.
if (request.getUserPrincipal() == null) {
return new ModelAndView("redirect:/");
}
if (request.isUserInRole("ROLE_ADMIN")) {
return new ModelAndView("redirect:/admin");
}
return new ModelAndView("redirect:/dashboard");
}
听起来你有逻辑处理来确定用户实际落地的位置。 如果我是你,我会将您的属性连接到另一个控制器,该控制器根据您的规则和从那里重定向来处理请求。
<form-login authentication-success-handler-ref="authenticationSuccessHandler"
always-use-default-target="true"
authentication-failure-url="/redirect/failure"
default-target-url="/home/configuration"/>
接着:
@Controller
@RequestMapping("/redirect/failure")
public class Redirector
{
public String doFailureRedirection(HttpServletRequest request, Model model)
{
//check where user is supposed to go and return
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.