2016-08-16 22 views
0

Grailsアプリケーションでspring-security-core:2.0.0を使用しています。しかし、認証に成功した後でも、「このページを表示する権限がありません」というメッセージがページに表示されます。私はROLE_ADMINとしてログインしました。役割に応じて2つのページにリダイレクトしたいと思います。管理者の役割のために私は管理ページに行き、ユーザー役割のためには私はユーザーページに行きたいと思う。ここでspring-security-coreの認証の問題:2.0.0

は私UrlMappings.groovy

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
     constraints { 
      // apply constraints here 
     } 
     } 

    /* get "/"(controller:"book", action:"index") 
     get "/books/create"(controller:"book", action:"create") 
     post "/books"(controller:"book", action:"save") 
     get "/books/$id"(controller:"book", action:"show") 
     get "/books/$id/edit"(controller:"book", action:"edit") 
     put "/books/$id"(controller:"book", action:"update") 
     delete "/books/$id"(controller:"book", action:"delete") 
    */ 

     "/"(view:'auth',controller:'login') 
     "/admin"(view:'adminPage') 

     "500"(view:'/error') 
    } 
} 

LoginController.groovy

package com.standout.utilityapplication 

import grails.plugin.springsecurity.annotation.Secured 

class LoginController { 

    def springSecurityService 

    @Secured(['ROLE_ADMIN', 'ROLE_USER']) 
    def index() { 
     println "INDEX PAGE RENDER FROM MY CONTROLLER"; 
     def roles = springSecurityService.getPrincipal().getAuthorities() 
     println roles; 

     if(roles.toString().contains("ROLE_ADMIN")) 
     { 
     println "admin" 
     redirect(uri: "/admin") 
     } 
     else 
     { 
     println "not admin" 
     redirect(uri: "/dataentry") 
     } 
    } 

    @Secured('ROLE_USER') 
    def nonadmin() 
    { 
     println("===notadmin") 
    } 

    @Secured('ROLE_ADMIN') 
    def admin() 
    { 
     println("====admin") 
    } 
} 

答えて

0

である私は、問題は、あなたのUrlMappingエントリとセキュリティの設定に起因していると思います。あなたが正常に認証されると、あなたのLoginControllerのcorrecltyにナビゲート確実だろうと

"/"(controller:'login') 

まず、( 'ログイン': '認証'、コントローラビュー) "/" を変更してみてください。現在のエントリは、LoginControllerに対応するアクションを持たないauth.gspをレンダリングしようとします。コントローラのみが指定されている場合、そのコントローラのインデックスアクションがデフォルトで呼び出されます。

第二に、他のUrlMapping用Config.groovyファイルにcontrollerAnnotation.staticRules値を指定します。「/管理」(ビュー:「adminPage」)

grails.plugin.springsecurity.controllerAnnotations.staticRules = [ 
    '/adminPage' : ['ROLE_ADMIN'] ] 

これが正しい許可を確実にするために設定されて/ adminはあなたのUrlMappingに基づいて/ adminPageに解決されるので、adminPage静的ビュー。

詳細については、次のSpring Securityドキュメントを参照してください。 http://grails-plugins.github.io/grails-spring-security-core/v2/guide/requestMappings.html#securedAnnotations