我有一个要求就像用户尝试访问应用程序中的任何URL而不登录应用程序
loggedin=false;
if(!loggedin)
{
forward request to login jsp page
}
else
{
execute the jsp
}
现在登录jsp将获取并将登录凭据发送到控制器servlet,如果登录凭证是正确的,则控制器servlet必须将请求发送回用户访问的URL。 我试图使用重定向/前进,但那些并不是满满的。
我能否有一些建议来实现这个目标
答案 0 :(得分:1)
在Spring Security甚至Java EE Declarative Security中都有开箱即用的解决方案。
无论如何,如果你想实现这种行为,就像在Cookie中存储原始URL的值一样简单。然后,当用户正确登录时,您可以重定向到该已保存的URL
boolean loggedin=false;
if(!loggedin){
Cookie c = new Cookie("URC", request.getPathInfo());
c.setHttpOnly(true);
c.setPath(request.getContextPath());
c.setMaxAge(-1);
response.addCookie(c);
//forward request to login jsp page
}else{
Cookie cookie = getUrlRedirectCookie(request);
if(cookie!=null){
//redirect to cookie.getValue()
}else{
//execute the jsp
}
}
}
private Cookie getUrlRedirectCookie(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(cookies!=null && cookies.length>0){
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals("URC")){
return cookie;
}
}
}
return null;
}