2012-04-13 86 views
0

使用表單登錄進行身份驗證。我需要能夠配置我們用於配置應用程序的其他方面的數據庫表中的failure-url和success-url。Spring Security的形式登錄的動態配置屬性

我的應用程序,它用於從不同的應用程序,它可能是這個服務器或其他服務器上連接到我需要失敗回到那裏時,或者當用戶註銷時去那裏這對用戶進行認證。

<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"/> 

我該如何更改這些屬性?

回答

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 
    } 
} 
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"); 
}