0

認証に form-login を使用します。アプリケーションの他の側面を構成するために、データベース テーブルから失敗 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

ユーザーが実際に着陸する場所を決定するロジック処理があるようです。もし私があなたなら、あなたのルールとそこからのリダイレクトに基づいてリクエストを処理する別のコントローラーによってインターセプトされるようにあなたの属性を配線します。

<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 に答える
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 に答える