как внедрить Shiro Security of Grails в мой проект - PullRequest
5 голосов
/ 28 апреля 2011

Я новичок в Grails и использую некоторую безопасность Широ. Я создал небольшой сайт со страницей входа в систему, и в случае успешного входа он перенаправляет меня на другую страницу входа.

Теперь я хочу внедрить Shiro Security. Я запустил этот плагин и приложение быстрого запуска Shiro в новом проекте Grails.

я хочу добиться того, чтобы я мог реализовать свою безопасность на своих страницах, используя файлы и код быстрого запуска. Пожалуйста, руководство. немного. какие файлы я должен использовать с этого быстрого запуска и какие изменения я должен сделать. ?

жду положительного ответа:)

1 Ответ

11 голосов
/ 29 апреля 2011

давайте сначала начнем со свежего приложения:

grails create-app ShiroDemo

теперь установите широбы, добавив его в раздел плагинов BuildConfig.groovy:

plugins {compile ": shiro: 1.1.4"}

нам нужен контроллер аутентификации и подстановочный знак:

grails create-auth-controller
grails create-wildcard-realm

теперь давайте создадим фиктивного пользователя с необходимой ролью и разрешениями в bootstrap.groovy:

import org.apache.shiro.crypto.hash.Sha256Hash
class BootStrap {
    def init = { servletContext ->
        def roleUser = new ShiroRole(name:'USER')
        roleUser.addToPermissions('auth:*')
        roleUser.addToPermissions('controller:action')
        roleUser.save(flush:true, failOnError: true)
        def testUser = new ShiroUser(username:'kermit',passwordHash:new Sha256Hash("password").toHex())
        testUser.addToRoles(roleUser)
        testUser.save(flush:true, failOnError: true)
    }
    def destroy = {
    }
}

Взгляните на role.User.addToPermissions строки.Здесь вы предоставляете разрешения для ваших контроллеров и действий.Если роли не хватает разрешения, пользователь будет перенаправлен на страницу отказа в доступе.Хорошее описание того, как задать разрешения, вы можете найти на странице плагина Широ: http://www.grails.org/plugin/shiro Вам нужно будет добавить больше разрешений для остальной функциональности вашего приложения.Вы также можете добавить эти разрешения непосредственно пользователю - иногда это полезно для тестирования или если вы не хотите устанавливать новую роль для чего-то особенного.

Кстати: обязательно используйте sha256hash, а не sha1hash, которыйне будет работать с текущей версией Shiro.

Последнее, что мы должны сделать, это создать класс /conf/SecurityFilters.groovy:

class SecurityFilters {
    def filters = {
        all(uri: "/**") {
            before = {
                // Ignore direct views (e.g. the default main index page).
                if (!controllerName) return true

                // Access control by convention. 
                accessControl() 
            } 
        } 
    } 
}

Это установит контроль доступа для всех контроллеров, но не для прямого просмотра.(наша страница указателя).

Теперь попробуйте запустить ваш проект:

grails run-app

Надеюсь, это поможет!

...