如何在我的项目中实施 Grails 的 Shiro Security

发布于 2024-11-03 19:06:00 字数 250 浏览 2 评论 0原文

我对 Grails 不熟悉,并且使用一些 Shiro 安全性。 我制作了一个带有登录页面的小网站,如果登录成功,它会将我重定向到另一个登录页面。

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

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

等待一些积极的回应:)

i m new to Grails and using some Shiro security.
I have made a little site with login page and if login successful it redirects me to another loggedin page.

now i want to implement Shiro Security. I have run that plugin and quick start app of Shiro on new Grails Project.

what i want to achieve is that how can i implement my security on my own pages using the Quick Start Files and code. Please guide. a little. which files should i use from that quick start and what changing should i made. ?

waiting for some positive response :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那些过往 2024-11-10 19:06:00

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

grails create-app ShiroDemo

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

plugins {
编译“: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.shiro.org/plugin/shiro。 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

希望有所帮助!

let's first start with a fresh app:

grails create-app ShiroDemo

now install shiroby adding it to the plugins section of BuildConfig.groovy:

plugins {
compile ":shiro:1.1.4"
}

we need the auth controller and the wildcard-realm:

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

now let's create a dummy user with the needed role and permissions in 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 = {
    }
}

Take a look at the role.User.addToPermissions lines. Here you grant permissions to your controllers and actions. If the role is missing a permission, a user will be redirected to the access denied page. You'll find a good description of how to specify permissions on the shiro plugin page: http://www.grails.org/plugin/shiro
You'll have to add more permissions for the rest of your application functionality.
You can add those permission also directly to the user - sometimes useful for testing or if you don't want to setup a new role for something special.

btw: make sure to use the sha256hash and not the sha1hash which will not work with the current shiro version.

last thing we have to do is create the /conf/SecurityFilters.groovy class:

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() 
            } 
        } 
    } 
}

This will install access control for all controllers but not direct views (our index page).

Now give it a try and run your project:

grails run-app

hope that helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文