我正在第一次使用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()
}
}
}
}
我想給「客人」訪問庫存只有腳手架。然而,在我的應用程序中,一旦用戶「訪客」登錄到其能夠訪問其他控制器,但我不希望發生這種情況。我感謝您的幫助。
如果有更好的使用Shiro角色,訪問控制和/或權限,請讓我知道它。
謝謝