如何在我的项目中实现Grairo的Shiro安全性

Sha*_*hah 5 grails shiro

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

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

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

等待一些积极的回应:)

rdm*_*ler 11

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

grails create-app ShiroDemo
Run Code Online (Sandbox Code Playgroud)

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

plugins {compile":shiro:1.1.4"}

我们需要auth控制器和wildcard-realm:

grails create-auth-controller
grails create-wildcard-realm
Run Code Online (Sandbox Code Playgroud)

现在让我们创建一个具有所需角色和权限的虚拟用户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 = {
    }
}
Run Code Online (Sandbox Code Playgroud)

看看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() 
            } 
        } 
    } 
}
Run Code Online (Sandbox Code Playgroud)

这将为所有控制器安装访问控制,但不安装直接视图(我们的索引页面).

现在尝试一下并运行您的项目:

grails run-app
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!