spring - Grails Spring Security验证对多个URL的访问

标签 spring grails spring-security gsp

我想验证用户是否可以在一个 View 中访问多个URL,如下所示:

<sec:access url="/user,/client">

就像sec:ifAnyGranted角色标记一样:
<sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_SUPERVISOR">

在我的验证中, sec:access网址仅适用于一个网址。
有什么办法或替代方法吗?

我使用grails的spring-security-core:2.0-RC2插件。

最佳答案

我不支持多个URL。您可以创建自己的标签来执行以下操作

class CustomTagLib {

    static namespace = "myTag"

    def ifAnyGranted = { attrs, body ->
        List<String> urls = attrs.remove('urls').split(',')
        Boolean hasAccess = Boolean.FALSE
        for (int i = 0; i < urls.size(); i++) {
            hasAccess = sec.access(url: urls.get(i).trim()) { Boolean.TRUE }
            if (hasAccess) {
                out << body()
                break
            }
        }
    }
}

并在如下 View 中使用它:
<myTag:ifAnyGranted urls="/domain/index,/domain/show">
    Something to display if has access to anyone of the URL
</myTag:ifAnyGranted>

关于spring - Grails Spring Security验证对多个URL的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831929/

相关文章:

Spring Boot + Spring OAuth Java配置

spring-security - 连接池+模拟查询

spring - JTATransaction 的替代方案

json - Grails:无法解析json并出现错误没有方法签名:static grails.converters.JSON.parse()

grails - 名称查询日期

spring - 即使端点设置为 permitAll,也会检查不记名 token

grails - 在 Grails 中用自己的方法扩展 SpEL?

java - 从 Spring boot 加载多个 Angular 项目

java - Spring MVC + Hibernate 具有双向关系

spring - 无状态前端grails服务器?