为用户身份验证编写拦截器过滤器

时间:2017-01-30 13:30:04

标签: java spring authentication handler interceptor

为简单的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;
    }
}

1 个答案:

答案 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