5

我是 Grails 的新手,并且使用了一些 Shiro 安全性。我创建了一个带有登录页面的小网站,如果登录成功,它会将我重定向到另一个登录页面。

现在我想实施 Shiro Security。我已经在新的 Grails 项目上运行了 Shiro 的插件和快速启动应用程序。

我想要实现的是如何使用快速启动文件和代码在我自己的页面上实现我的安全性。请指导。一点。我应该从那个快速开始使用哪些文件以及我应该做哪些更改。?

等待一些积极的回应:)

4

1 回答 1

11

让我们首先从一个新的应用程序开始:

grails create-app ShiroDemo

现在安装 shiroby,将其添加到 BuildConfig.groovy 的插件部分:

插件 { 编译 ":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线条。在这里,您授予控制器和操作的权限。如果角色缺少权限,用户将被重定向到拒绝访问页面。您会在 shiro 插件页面上找到有关如何指定权限的详细说明: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

希望有帮助!

于 2011-04-29T06:51:35.290 回答