0

使用表单登录进行身份验证。我需要能够从用于配置应用程序其他方面的数据库表中配置失败 URL 和成功 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"/>

我将如何即时更改这些属性?

4

2 回答 2

1

我不认为你可以动态配置它们——你最好指向读取数据库属性的控制器方法,然后重定向到适当的页面。

@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");
}
于 2012-04-13T21:06:17.110 回答
1

听起来你有逻辑处理来确定用户实际登陆的位置。如果我是你,我会将你的属性连接到另一个控制器,该控制器根据你的规则处理请求并从那里进行重定向。

<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
    }
}
于 2012-04-13T21:07:31.433 回答