我不是一個春天專家,我現在面臨一個問題,我不明白...不理解春季SessionAttribute和自動裝配
我有我的控制器一SessionAttribute「用戶」,即自動連接到我的bean用戶。 當我登錄時,我的用戶被填充一些值等。
當我註銷時,我期望我的會話屬性「用戶」將被重置,但它保留其值。
那麼問題在哪裏?我的登出無法正常工作嗎?或者是正常的,那麼有人能解釋我在春天發生了什麼嗎?
下面是一個代碼示例,瞭解我的問題:
@Controller
@SessionAttributes("user")
public class HomeController
{
@Autowired
private User user;
// Session Attribute
@ModelAttribute("user")
public User setSessionAttribute()
{
LOGGER.debug("Adding user to session...");
return user;
}
...
}
編輯:註銷示例代碼和用戶聲明
我的用戶聲明如下:
@Component
public class User
{
...
}
要註銷我有一個鏈接指向/ myapp/j_spring_security_logout,我已經實現了一個註銷處理程序:
@Component
public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler
{
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException
{
//to check if user is in session, but it's not
Enumeration<String> e = request.getSession().getAttributeNames();
//some code needed to log out from my custom security manager
//kill the session (not spring session) and redirect to the specified url
agent.logout("/myapp/login");
super.onLogoutSuccess(request, response, authentication);
}
}
您如何註銷?你可以發佈代碼註銷 – Anugoonj
你的'User' bean在哪裏聲明? –