2012-05-16 40 views
0
package hompage 

import logindetails.* 
import login.User 
import grails.plugins.springsecurity.Secured; 

class RedirectController 
{ 
    def springSecurityService 

    def index() { } 

    /** 
    * This method will redirect the user if it has the role "ROLE_ADMIN" 
    */ 
    @Secured(['ROLE_ADMIN']) 
    def adminhomepage = 
    { 
     render(view: "adminhome") 
    } 

    /** 
    * This method will redirect the user if it has the role "ROLE_USER" 
    */ 
    @Secured(['ROLE_USER']) 
    def userhomepage= 
    { 
     render(view: "userhome") 
    } 
} 

这是我的代码,我想重定向到adminhome当且仅当角色是ROLE_ADMIN和USERHOME如果该角色ROLE_USER。Grails的春季安全插件@Secured标注不解决

请帮我执行这段代码。

我使用NetBeans IDE,并有进口进口grails.plugins.springsecurity.Secured

unable to resolve class grails.plugins.springsecurity.Secured @ line 5, column 1. 

即使(通常表明Java代码就像红色感叹号)警告进口是目前我没有得到它是什么问题?

+0

入住这里http://stackoverflow.com/questions/19877725/grails-spring-core-security-plugin-unable-to-resolving-classes – akaashanky

回答

2

检查你的classpath,做一个grails clean,并确保这个插件存在于BuildConfig.groovy中。

0

我在Netbeans中也得到警告;它不会影响我的任何事情。一切仍然编译并运行良好。

@Secured注释不会做任何形式的重定向 - 它只是确保在您发送到那里时允许您执行该操作。

我想确保我明白 - 无论他们在'adminHomeController/index'被重定向到'adminHomeController/adminhomepage.gsp'还是他们得到'adminHomeController/index.gsp'向上?如果他们被重定向,那么您提供的代码中没有任何内容会导致这种情况。你有任何URL映射会这样做吗?

或者是真正的问题,如果有人没有ROLE_USER他们仍然被允许去'adminHomeController/adminhomepage'?如果这是发生了什么事请确保您在您的配置文件如下:

grails.plugins.springsecurity.securityConfigType = "Annotation" 

然后重新启动应用程序并尝试访问adminhomepage作为不具有ROLE_USER用户。如果他们仍然可以到达那里,确保他们确实没有ROLE_USER。

如果这是在登录时重定向某人,有更多更全面的方法来处理这个问题,比如创建一个自定义的AuthSuccessHandler,但这有点复杂。要做到重定向这样我会做这样的事情:

import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils.* 

    def index() { 
     if(ifAnyGranted("ROLE_ADMIN")) { 
      redirect(action: 'adminhomepage') 
     } else if(ifAnyGranted("ROLE_USER")) { 
      redirect(action: 'userhomepage') 
     } 
    } 

    def adminhomepage() { 
     //admin stuff 
    } 

    def userhomepage() { 
     //user stuff 
    } 
+0

基本上我只是想,如果登录用户拥有角色作为ROLE_ADMIN比只有def adminhomepage()应该得到执行,如果用户是普通用户然后def userhomepage()得到执行。 – user1397872

+0

那么你没有真正回答我问过的任何问题,并且你在原始文章中没有提到有关ROLE_ADMIN或def userhomepage()的任何信息。看看我的编辑,如果这不起作用请详细解释发生了什么。 – Kelly

+0

基本上我使用弹簧安全核心插件为用户管理部分。我正在按照春季安全代码的教程,这里是链接。 blog.springsource.org/2010/08/11.....在这个链接中,你会发现PostController()类,它说,一旦在任何检查角色的方法中定义了注解,并执行该方法, t.I编辑了我的原始帖子,请参阅并提出解决方案 – user1397872

0

我跟着你的意见列出的相同教程,并击中了同样的问题。正如本文所述,“错误”并没有阻止我的代码从命令行构建。但作为一名Grails初学者,在游戏中如此早期看到这款小红X最基本的应用可能令人沮丧。

由于应用程序编译并从命令行运行,这肯定是IDE的问题。我检查了我的插件,Spring Security没有列出。右键单击插件 - >打开Grails插件管理器并通过STS以这种方式安装。它会卸载并重新安装相同的插件。我正在运行较旧版本的STS,因此希望这可以通过更新版本来解决。

希望这有助于任何人在这个较旧的线程上绊倒。

4

包已经从grails.plugins重命名为grails。插件

import grails.plugin.springsecurity.annotation.Secured 

请使用此。 编号:source

+1

链接已损坏。 –

+0

修复了断开的链接,谢谢! – Balaji