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