2017-03-30 7 views
0

Grailsを使用してWebアプリケーションを開発していて、Admin Interface Pluginを使用しようとしています。私はまた、ユーザーが役割を得ていたかどうかを確認するには、次のステートメントを追加Grails - Spring Security Plugin - 'ROLE_ADMIN'を追加したユーザーが 'ROLE_NO_ROLES'を持っています

def init = { servletContext -> 
    def adminUser = User.findByUsername("episo_admin_root") 
     if(!adminUser){ 
      print "Creating admin user... " 
      adminUser = new User(username: username, emailAddress: emailAddress, password: password, birthDate: new Date(1, 1, 1), 
        sex: Sex.AGENDER, enabled: true, accountConfirmed: true, accountCreationDate: new Date()) 
      adminUser.save(flush: true, failOnError: true) 
      def auth = adminUser.addAuthority(Roles.ROLE_ADMIN) 
      auth.save(flush: true, failOnError: true) 
     } 
} 

if(adminUser.authorities.any { it.authority == Roles.ROLE_ADMIN }) println "Admin role added."テスト目的のために、私は次のコード行を使用してBootStrap.groovyから管理ユーザを作成しました

このチェックは成功し、「管理者の役割が追加されました。」コンソールに印刷されます。ここ は春のセキュリティのための私の設定です:

grails.plugin.springsecurity.rejectIfNoRule = true 
grails.plugin.springsecurity.fii.rejectPublicInvocations = false 
grails.plugin.springsecurity.interceptUrlMap = [ 
       '/':      ['permitAll'], 
       '/home':     ['permitAll'], 
       '/home.gsp':    ['permitAll'], 
       '/assets/**':    ['permitAll'], 
       ... 
       ... 
       '/**/js/**':    ['permitAll'], 
       '/**/css/**':    ['permitAll'], 
       '/**/images/**':   ['permitAll'], 
       '/**/favicon.ico':  ['permitAll'], 
       '/admin/**':    ['ROLE_ADMIN'] 
     ] 

そしてここでは、管理インターフェイスのプラグインのための私の設定です:

grails.plugin.admin.accessRoot = "/admin" 
grails.plugin.admin.domains."Users" = [ "mypackage.User" ] 
grails.plugin.admin.domains."My Groups" = [ "mypackage.Group" ] 
grails.plugin.admin.domains."Security Groups" = [ 'mypackage.Authority', 'mypackage.UserAuthority' ] 
grails.plugin.springsecurity.active = true 
grails.plugin.springsecurity.useBasicAuth = true 
grails.plugin.admin.security.role = "ROLE_ADMIN" 

しかし、私は新しい管理者ユーザとしてログインし、「/ adminに移動するとき

Secure object: FilterInvocation: URL: /admin; Attributes: [ROLE_ADMIN] 
Previously Authenticated: org.springframew[email protected]5ff53bc5: Principal: [email protected]: Username: [PROTECTED]; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_NO_ROLES; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]957e: RemoteIpAddress: [PROTECTED]; SessionId: null; Granted Authorities: ROLE_NO_ROLES 

あなたがスクロールするとsidew:アクセスが 『拒否されましたページ、および以下のデバッグ情報をコンソールに記録されている - HTTPステータス403」、私は、Apache Tomcatの取得します』そのデバッグ情報を見ると、Spring Securityは "許可され​​た権限"がROLE_NO_ROLESとみなされます。

ユーザーにロールを追加する際に何か問題がありますか? Spring Securityが私にこのユーザを与えたことがわからないのはなぜですか?ROLE_ADMIN

これをデバッグするのに何時間も費やしましたが、私のコードで何が間違っているのか理解できません。

答えて

0

私はそれを理解しました。私は問題を解決した設定ファイルから次の行を削除しました:

grails.plugin.springsecurity.useRoleGroups = true 
関連する問題