2015-10-15 73 views
0

构建Grails(2.2.0)站点并出现链接(标题中)仅在用户登录时才起作用的奇怪问题。这些特定链接是适用于所有人的一般链接。Grails链接只在登录时才起作用

当我点击链接(S)后带我到一个空白页,上面写着“notvalid”

我猜必须有一种方法,使这些链接,或者让他们公开所以不要求登录....

任何帮助,将不胜感激。

片段从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'] 

]

+0

你将需要提供更多的信息,这个问题可以回答。这些链接之一的示例如何?如何在涉及安全性时包含URL映射? –

+0

@JoshuaMoore - 感谢您的建议,我刚刚添加了上面的编辑,希望能给出一个更好的想法。 – Aaron

回答

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 { 

} 
+0

这就是我的想法,但仍然显示这些链接无效。 也许我错过了那个列表中的东西? 我已经将它包含在上面,以便您可以看到我迄今列出的内容。 – Aaron

+0

你可以尝试给链接添加@Secured(['permitAll'])注释吗? – Neoryder

+0

嗯,加入像你说的,但它给“Config.groovy中:136:无法解析类保护,无法找到类注释” – Aaron