我第一次使用 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()
// 'user' 现在拥有所有管理员权限 }
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”登录它就可以访问其他控制器,但我不希望这种情况发生。我感谢您的帮助。
如果有更好的使用 Shiro 角色、访问控制和/或权限,请告诉我。
谢谢