检查用户是否登录grails Spring Security的最佳方法是什么?

时间:2017-12-09 05:03:49

标签: grails spring-security interceptor grails-plugin grails-3.1

我想检查用户是否已登录。我在大多数项目中集成了拦截器以检查用户是否已登录。但这对AJAX请求不起作用并且匹配拦截器中的所有控制器导致过滤器应用于所有控制器,包括/ static / **,在这种情况下我将不得不排除(.excludes(uri:&#) 34; / static / **"))。这是正确和标准的做法吗?

LoginInterceptor() {
        matchAll()
                .excludes(controller: "login") 
                .excludes(controller: "signUp") 
                .excludes(uri: "/static/**")
                .excludes(uri: "/assets/**")
    }
    boolean before() {
        if (!springSecurityService.isLoggedIn()) {
            flash.message="You need to login to access furthur pages"
            redirect( controller: 'login',action: 'auth');
            return false
        }
        true
    }

    boolean after() { true }

    void afterView() {
        // no-op
    }

上述代码不适用于AJAX请求。我如何制作一个兼容AJAX和WEB请求的通用拦截器?这是监控登录请求的标准方法吗?

1 个答案:

答案 0 :(得分:1)

如果使用spring security插件。您可以通过配置安全配置来完成此操作。您可以找到更多here

对于ajax请求,您可以检查返回代码,如果是== 403,您可以将用户重定向到登录页面。