0

LoginSuccessHandler(CustomAuthenticationSuccessHandlerを拡張)にセッション属性を設定しました

public void onAuthenticationSuccess(HttpServletRequest request,
            HttpServletResponse response, Authentication authentication)
            throws IOException, ServletException {


HttpSession session = request.getSession();
session.setAttribute("TICKET", "dummyVAL");

}

LogoutSuccessHandler(SimpleUrlLogoutSuccessHandlerを拡張)で同じ値を取得したいのですが、そうすると

public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {

HttpSession session = request.getSession();
session.getAttribute("TICKET");
    }

null を取得します。successhandler で設定したログイン ハンドラーのセッション値を取得するにはどうすればよいですか。

4

2 に答える 2

1

セッションの無効化後、spring-security が呼び出さlogout-success-urlれるため、ここでセッションが見つかりません

回避策は call a logout url pattern from logout link これを使用することです

@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(ModelMap model, HttpSession session) {
    //** do some thing **//
    return "redirect:/j_spring_security_logout";

}
于 2013-10-18T12:46:27.987 に答える
0

セッションが破棄されると、「onLogutSuccess」メソッドが起動されると思います。したがって、セッションで値またはパラメーターを見つけることができません。そして、 request.getSession() で行っていることは、そのセッションには存在しないため、属性に対して null を返す新しいセッションを作成していることです。

于 2013-10-18T12:43:41.303 に答える