контроль доступа, роль и разрешение в Grails
Я работаю над приложением Grails впервые и теперь хочу защитить некоторые страницы, которые будут просматривать только администраторы, и дать некоторые разрешения другим пользователям.
Я использую плагин Apache Shiro для Grails.
Мой пример кода в начальной загрузке выглядит следующим образом
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()
}
}
}
}
Я хотел предоставить "Гостю" доступ кинвентарь только строительные леса. Однако в моем приложении однажды пользователь "Гость" вошел в систему, чтобы получить доступ к другим контроллерам, но я не хочу, чтобы это произошло. Я ценю вашу помощь.
Если лучше использовать роль Широ, контроль доступа и / или разрешения, пожалуйста, дайте мне знать об этом.
Спасибо