为简单的Web应用程序创建一个简单的过滤器。
如果用户未使用登录名" admin"登录,或尝试访问/ home资源或/ feature资源,则应将其路由回登录页面。
然而,似乎我遇到了重定向循环问题。这种方法有什么问题。对于这样的要求,我认为这是不正确的解决方法。
public class LoginInterceptor extends HandlerInterceptorAdapter {
private static final Logger logger = Logger.getLogger("LoginInterceptor.class");
// to be used checking session management for user.
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response,
Object handler) throws Exception {
logger.log(Level.INFO, "[][][][][] +++ prehandle");
if (request.getAttribute("username") != null) {
if (request.getAttribute("username").equals("admin")) {
return true;
} else
response.sendRedirect("/sessionmanagement/login");
return false;
} else if (request.getAttribute("username") == null & !request.getRequestURI().equals("/login")) {
// return false and redirect to login.
response.sendRedirect("/sessionmanagement/login");
return false;
}
// return false and redirect to login.
response.sendRedirect("/sessionmanagement/register");
return false;
}
}
答案 0 :(得分:-1)
如果您使用弹簧,您可以使用弹簧安全设备来执行此操作,您的用户可以使用ROLES,因此您不会仅仅根据用户名进行检查,https://spring.io/guides/gs/securing-web/此处是您可以使用的指南回过头来看,这是非常简单的,所以你的方法有一个注释来检查用户的权限。
这里可以帮助你的另一件事:Spring Security with roles and permissions
http://www.journaldev.com/8748/spring-security-role-based-access-authorization-example