Grails链接仅在登录时才起作用

时间:2015-10-15 11:24:22

标签: grails spring-security

构建一个grails(2.2.0)站点并且遇到奇怪的问题,其中链接(在标题中)仅在用户登录时起作用。这些特定链接是应该适合所有人的一般链接。

当我点击链接时,它会转到一个空白页面,上面写着"无效"

我猜测必须有办法启用这些链接或将其公开,以免需要登录....

任何帮助都将不胜感激。

来自main.gsp的片段

<div class="collapse navbar-collapse" id="navbar-collapse-main">
        <ul class="nav navbar-nav navbar-right text-center">
            <li><a href="${createLink(controller: 'main', action: 'contact')}">Contact</a></li>
            <li><a href="${createLink(controller: 'main', action: 'calendar')}">Calendar</a></li>

来自MainController的片段

class MainController {

// show events up to a two weeks after they closed
def Calendar() {
    // TODO: this action is not working without authorization
    def events = Event.findAllByBidEndDateTimeGreaterThan(new Date() - 14);
    render(view: 'calendar', model: [events: events])
}

def contact() {
    render(view: 'contact')
}

}

下面的interceptUrlMap:

grails.plugins.springsecurity.interceptUrlMap = [
    '/dashboard/**': ['IS_AUTHENTICATED_FULLY'],
    '/home/**'     : ['permitAll'],
    '/**'          : ["permitAll"],
    '/'                    : ['permitAll'],
    '/index'               : ['permitAll'],
    '/index.gsp'           : ['permitAll'],
    '/main.gsp'           : ['permitAll'],
    '/auth.gsp'           : ['permitAll'],
    '/contact'              : ['permitAll'],
    '/calendar'             : ['permitAll'],
    '/assets/**'           : ['permitAll'],
    '/**/js/**'            : ['permitAll'],
    '/**/css/**'           : ['permitAll'],
    '/**/images/**'        : ['permitAll'],
    '/**/fonts/**'         : ['permitAll'],
    '/**/favicon.ico'      : ['permitAll']

1 个答案:

答案 0 :(得分:0)

需要在Config.groovy

中添加这样的内容
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
        '/'                    : ['permitAll'],
        '/index'               : ['permitAll'],
        '/index.gsp'           : ['permitAll'],
        '/about.gsp'           : ['permitAll'],
        '/about'               : ['permitAll'],
        '/assets/**'           : ['permitAll'],
        '/**/js/**'            : ['permitAll'],
        '/**/css/**'           : ['permitAll'],
        '/**/images/**'        : ['permitAll'],
        '/**/fonts/**'         : ['permitAll'],
        '/**/favicon.ico'      : ['permitAll']
]



package com.grails

import org.springframework.security.access.annotation.Secured

@Secured(['permitAll'])
class PersonController {

}