java - 有没有一种方法可以防止请求使用过滤器到达 grails 中的操作

标签 java spring spring-boot grails groovy

当 token 无效时,我试图阻止请求到达 grails 操作(“/$controller/$action?/$id”),以便它在不调用操作的情况下将 JSON 响应返回给客户端

我尝试将返回语句添加到代码中,但请求仍然调用该操作。 我正在使用 java 7 和旧版本的 grails (grails 2.4.3)

        class ShiroSecurityFilters {
        def filters = {
            vueJsFilter(uri: '/api/**'){
                def userObject = null
                def response_data = null
                before = {
                    def authorization_header = request.getHeader("Authorization")
                    if (authorization_header){
                        def authorization = authorization_header.split(' ')[1]
                        userObject = Collaborateur.findByAccessToken(authorization)
                        if (userObject){
                            println "Welcome Back, $userObject"
                        }else{
                            response_data = [
                                title: "filter token error"
                            ]
                            response.status = 401
                            render(response_data as JSON)
                        }
                    }
                }
            }
        }
    }

我希望过滤器阻止请求执行操作或调用它,而是将响应发送回客户端,而不是将请求发送到下一个资源,在这种情况下是操作,我在网上做了一些研究,但我没有找不到任何东西,我们将不胜感激

最佳答案

你必须 return false来自 before 过滤器以防止调用操作。在上面的源代码中,过滤器不返回任何内容。

关于java - 有没有一种方法可以防止请求使用过滤器到达 grails 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739595/

相关文章:

java - 列出 SpringApplication.run 加载的所有 bean

java - 迭代器循环的奇怪打印行为

java - 如何在 jackson 2.9.x 中禁用 0/1 到 true/false 的转换

java - 有没有基于spring hibernate注解的java web cms

spring - 在 Spring Boot 2 中,是否可以自动生成具有唯一约束的 JoinTable?

java - 不支持内容类型 'multipart/form-data;boundary=----...;charset=UTF-8'

java - ApacheKafka Appender 回退

java - 转换 hh :mm:ss to mmm:ss

java - 多次导入相同的 spring 应用程序上下文文件

spring - 由 : java. lang.IllegalArgumentException 引起:无法反序列化 Spring Batch 中的执行上下文