如何在我的项目中实现Grails的Shiro安全性
我是Grails新手,使用了一些Shiro安全性。 我用登录页面创建了一个小站点,如果登录成功,它会将我重定向到另一个登录页面 现在我想实现Shiro安全性。我已经在新的Grails项目上运行了Shiro的插件和快速启动应用程序 我想要实现的是,如何使用快速启动文件和代码在自己的页面上实现安全性。请导游。一点。我应该从快速入门中使用哪些文件,我应该做哪些更改如何在我的项目中实现Grails的Shiro安全性,grails,shiro,Grails,Shiro,我是Grails新手,使用了一些Shiro安全性。 我用登录页面创建了一个小站点,如果登录成功,它会将我重定向到另一个登录页面 现在我想实现Shiro安全性。我已经在新的Grails项目上运行了Shiro的插件和快速启动应用程序 我想要实现的是,如何使用快速启动文件和代码在自己的页面上实现安全性。请导游。一点。我应该从快速入门中使用哪些文件,我应该做哪些更改 等待一些积极的回应:)让我们先从一个新的应用程序开始: grails create-app ShiroDemo 现在安装shiroby,
等待一些积极的回应:)让我们先从一个新的应用程序开始:
grails create-app ShiroDemo
现在安装shiroby,将其添加到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插件页面上找到关于如何指定权限的详细说明:
您必须为应用程序的其余功能添加更多权限。
您还可以将这些权限直接添加到用户-有时对测试有用,或者如果您不想为某些特殊内容设置新角色
顺便说一句:请确保使用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
希望有帮助 亲爱的拉尔夫。当然,我们需要添加用户和角色域类。。您可以在用户和角色域的内容中进行编辑吗。请……)还有,我们应该使用命令grailsgenerateviews创建视图吗?这个例子是完整的和有效的-ShiroRole和ShiroUser是由上面的语句生成的!亲爱的拉尔夫,你们这些古丁真是太棒了。。现在我希望我已经有了用户和角色类以及一个索引页。(视图)。我有一个名为UserController的控制器,有操作登录和注销。现在,我如何将这种安全性应用到代码中?如果需要管理用户,可以通过标准grails机制(generate all)为ShiroUser和ShiroRole创建视图和控制器。如果希望使用自己的AuthController,只需查看自动生成的AuthController,复制并粘贴登录和注销代码即可。不幸的是,登录页面的位置似乎是硬编码的。因此,每当系统需要重定向到登录页面时,它都会重定向到/auth/login——您可以使用UrlMappings将其重定向到您自己的控制器