一.引用shiro插件

//在BuildConfig的plugins下面添加
compile ":shiro:1.2.1"

二.引用新插件后要进行编译

//grails命令
compile

三.生成脚手架文件

//grials命令 , 要注意的是后面的那个点,否则生成好的文件会混乱
shiro-quick-start --prefix=com.security.

四.配置Bootstrap.groovy

class BootStrap {

    def shiroSecurityService

    def init = { servletContext ->
// Create the admin role
def adminRole = Role.findByName('ROLE_ADMIN') ?:
new Role(name: 'ROLE_ADMIN').save(flush: true, failOnError: true) // Create the user role
def userRole = Role.findByName('ROLE_USER') ?:
new Role(name: 'ROLE_USER').save(flush: true, failOnError: true) // Create an admin user
def adminUser = User.findByUsername('admin') ?:
new User(username: "admin",
passwordHash: shiroSecurityService.encodePassword('password'))
.save(flush: true, failOnError: true) // Add roles to the admin user
assert adminUser.addToRoles(adminRole)
.addToRoles(userRole)
.save(flush: true, failOnError: true) // Create an standard user
def standardUser = User.findByUsername('joe') ?:
new User(username: "joe",
passwordHash: shiroSecurityService.encodePassword('password'))
.save(flush: true, failOnError: true) // Add role to the standard user
assert standardUser.addToRoles(userRole)
.save(flush: true, failOnError: true) }
def destroy = {
}
}

五.增加一个Controller

package com.security

class HomeController {

    def index() {
render ("此页面不需要登陆")
}
def secured() {
render ("此页面需要用户或者管理员登陆")
}
def admin() {
render ("此页面需要管理员登陆")
}
}

六.修改com.security.SecurityFilters.groovy

package com.security

/**
* Generated by the Shiro plugin. This filters class protects all URLs
* via access control by convention.
*/
class SecurityFilters {
def filters = {
//1.role_admin
home(controller: "home",action: "admin"){
before = {
accessControl{
role("ROLE_ADMIN");
}
}
}
//2.role_user
home_securied(controller: "home",action: "secured"){
before = {
accessControl{
role("ROLE_USER");
}
}
}
}
}

这里使用的是shiroPlugin提供的accessControl,role方法会划横线,这里是不影响程序运行的,

使用 role( …… ),验证访问对象是否具有相应的角色;

使用 permission( …… ),验证访问对象是否具有相应的 Permission。

这里没有使用shiro的Tag但是也做一点称述

下是经常使用到的 Tag:

  • principal,输出当前用户的标识
  • hasRole,判断当前用户是否属于给定的角色,参数:name
  • hasPermission, 判断当前用户是否具有指定的权限,参数:type,action 或者 permission
  • isLoggedIn,判断当前用户是否已经登录
  • hasAnyRole,判断当前用户是否属于给定的某个角色,参数:in

使用方式

<shiro:hasPermission permission="home:index,admin">
<span class="button">
<g:actionSubmit class="edit" value="Edit" />
</span>
<span class="button">
<g:actionSubmit class="delete"
onclick="return confirm('Are you sure?');"
value="Delete" />
</span>
</shiro:hasPermission>

grails-shiro权限认证的更多相关文章

  1. Shiro入门之一 -------- Shiro权限认证与授权

    一  将Shirojar包导入web项目 二 在web.xml中配置shiro代理过滤器 注意: 该过滤器需要配置在struts2过滤器之前 <!-- 配置Shiro的代理过滤器 -->  ...

  2. 学习Spring Boot:(十三)配置 Shiro 权限认证

    经过前面学习 Apache Shiro ,现在结合 Spring Boot 使用在项目里,进行相关配置. 正文 添加依赖 在 pom.xml 文件中添加 shiro-spring 的依赖: <d ...

  3. shiro权限认证与授权

    什么是shiro? Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. 为什么要用sh ...

  4. shiro权限认证Realm的四大用法

    一.SimpleAccountRealm public class AuthenticationTest {          SimpleAccountRealm sar=new SimpleAcc ...

  5. springboot+mybatis+shiro——登录认证和权限控制

    转载:https://z77z.oschina.io/ 一.引入依赖 shiro-all包含shiro所有的包.shiro-core是核心包.shiro-web是与web整合.shiro-spring ...

  6. spring-boot整合shiro作权限认证

    spring-shiro属于轻量级权限框架,即使spring-security更新换代,市场上大多数企业还是选择shiro 废话不多说  引入pom文件 <!--shiro集成spring--& ...

  7. 十、 Spring Boot Shiro 权限管理

    使用Shiro之前用在spring MVC中,是通过XML文件进行配置. 将Shiro应用到Spring Boot中,本地已经完成了SpringBoot使用Shiro的实例,将配置方法共享一下. 先简 ...

  8. Spring Boot Shiro 权限管理 【转】

    http://blog.csdn.net/catoop/article/details/50520958 主要用于备忘 本来是打算接着写关于数据库方面,集成MyBatis的,刚好赶上朋友问到Shiro ...

  9. 4.SSM配置shiro权限管理

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.搭建SSM项目: http://www.cnblogs.com/yysbolg/p/6909021.html ...

  10. Spring Boot Shiro 权限管理

    Spring Boot Shiro 权限管理 标签: springshiro 2016-01-14 23:44 94587人阅读 评论(60) 收藏 举报 .embody{ padding:10px ...

随机推荐

  1. .vimrc文件配置及航意

    1.  vimrc文件常见语句释义 设定 tab 的位置          :set tabstop=4 输入 tab 时自动将其转化为空格          :set expandtab       ...

  2. Git的status命令

    这个命令是用来查看当前版本库的状态,如果当前版本库没有任何改变,而且都已提交,那么使用status命令结果如下: 如果有文件改变了,但是没有使用add,那么使用status命令结果如下: 如果使用了a ...

  3. tostring() 作用

    tostring() 作用 -->显示类中属性的值 -->不想显示该类的内存地址

  4. Sqlserver列出所有数据库名,表名,字段名

    Sqlserver列出所有数据库名,表名,字段名   1.获取所有数据库名:   ? 1 SELECT Name FROM Master..SysDatabases ORDER BY Name   注 ...

  5. paper 25 :SVM支持向量机是什么意思?

    转载来源:https://www.zhihu.com/question/21094489 作者:余洋链接:https://www.zhihu.com/question/21094489/answer/ ...

  6. 【ibus】设置ibus输入法(pinyin & sunpinyin)

    设置ibus-pinyin 在终端中运行 /usr/lib/ibus-pinyin/ibus-setup-pinyin 命令可以调出ibus的完整设置对话框 设置ibus-sunpinyin 可以执行 ...

  7. [置顶] lua 进阶3--lua文件中调用C++函数

    前面讲了一下,C++读取lua文件中的变量,包括一维表.二维表这些,这节讲一下如何在lua文件中去调用C++函数 C++代码如下 #include <stdio.h> extern &qu ...

  8. Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤

    资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...

  9. 苹果系统直接读写 ntfs 磁盘

    苹果系统对 ntfs 能读,但不能写. 方案1:修改 fstab 法 ======================================== 读写支持.在使用本教学文章之前,请先确定你没有安 ...

  10. MySQL5.5半同步模式

    MySQL5.5支持半同步的复制模式,什么是半同步的? 1. MySQL5.5之前的Master-SLave的复制模式是异步的,这里的文档有详细的说明;