實現註銷功能,我是新來的Spring Web MVC ..如何使用Spring Web MVC框架
我能得到一些例子或網上鍊接,顯示我如何使用Spring Web MVC框架實現註銷功能?
我不想使用春季安全(即ACEGI)的內置功能..
在此先感謝...
實現註銷功能,我是新來的Spring Web MVC ..如何使用Spring Web MVC框架
我能得到一些例子或網上鍊接,顯示我如何使用Spring Web MVC框架實現註銷功能?
我不想使用春季安全(即ACEGI)的內置功能..
在此先感謝...
會話失效的技巧不起作用。看來Spring認證在某個地方緩存了會話ID,並且如果會話失效,甚至可以接受COOKIE。
另一種解決方案是手動清除春季安全上下文:
public void manualLogout() {
SecurityContextHolder.getContext().setAuthentication(null);
}
下面是代碼,如何手動登錄用戶(如果有人需要):
public void doManualLogin(HttpServletRequest request, String u, String p) {
UsernamePasswordAuthenticationToken token =
new UsernamePasswordAuthenticationToken(u, p);
token.setDetails(new WebAuthenticationDetails(request));
Authentication auth = authenticationProvider.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(auth);
}
其中AuthenticationProvider的是來自你的豆子彈簧配置實現
org.springframework.security.authentication.AuthenticationProvider
您只需無效會話和用戶登錄出。這由servlet api直接支持:HttpSession.invalidate()。您可以編寫一個只調用invalidate的控制器。
class Logout implements Controller{
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
ModelAndView view = //?;
request.getSession().invalidate();
return view;
}
}
@Controller
public class LogoutController {
@RequestMapping(value="/logout",method = RequestMethod.GET)
public String logout(HttpServletRequest request){
HttpSession httpSession = request.getSession();
httpSession.invalidate();
return "redirect:/";
}
}
請使用上面的代碼來實現註銷過濾
會話過期時它將如何重定向到登錄頁面。你能否提供另一種情況。 – 2017-07-08 19:28:02
但這樣一來,還是我的樣本URL將顯示註銷後的頁面.. – Nirmal 2009-11-18 11:05:01
你可以用的getSession(http://java.sun.com/javaee/5檢查/docs/api/javax/servlet/http/HttpServletRequest.html#getSession%28boolean%29)如果會話仍處於活動狀態。或者你在會話中關注你的認證信息。您必須在攔截器或每個控制器中執行此操作。 – 2009-11-18 11:53:01
您可能還需要清除您爲支持「記住我」功能而設置的任何Cookie。否則,您將在下次訪問該網站時立即登錄。 – David 2009-11-18 15:32:46