私は初めてgrailsアプリケーションを開発していますが、管理者だけが閲覧できるようにいくつかのページを保護し、他のユーザーにいくつかの権限を与えたいと考えています。grailsのアクセス制御、役割とアクセス許可
私はgrailsにApache Shiroプラグインを使用しています。ブートストラップで
私のサンプルコードは、この
class BootStrap {
def init = { servletContext ->
def adminRole
if(ShiroRole.findByName("Admin".isEmpty())){
adminRole = new ShiroRole(name: "Administrator")
adminRole.addToPermissions("*:*")
adminRole.addToPermissions("admin")
adminRole.save()
//のように見える 'ユーザーが' 今、すべての管理者権限を持っている }
if (ShiroUser.findAllByUsername("user").isEmpty()) {
def user = new ShiroUser(username: "user", passwordHash: new Sha256Hash("pass").toHex())
user.addToPermissions("*:*")
user.addToRoles(adminRole)
user.save()
}
if (ShiroUser.findAllByUsername("Guest").isEmpty()) {
def user = new ShiroUser(username: "Guest", passwordHash: new Sha256Hash("pass").toHex())
user.addToPermissions("inventory:*")
user.save()
}
}
def destroy = {
}
}
マイShiroSecurityFilters
のように見えますclass ShiroSecurityFilters {
def filters = {
all(uri: "/**") {
before = {
// Ignore direct views (e.g. the default main index page).
if (!controllerName) return true
// Access control by convention.
accessControl()
}
}
}
}
足場にのみ「ゲスト」アクセスを許可したいと思います。しかし、私のアプリケーションでは、一度ユーザー "Guest"がログインして他のコントローラにアクセスできますが、そのようなことは起こりたくありません。私はあなたの助けに感謝します。
城の役割、アクセス制御、アクセス許可の方が良い場合は、私に知らせてください。
ありがとうございました