shiro 同时实现url和按钮的拦截_项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于...

1 课程计划

1、 常见权限控制方式

2、 基于shiro提供url拦截方式验证权限

3、 在realm中授权

4、 基于shiro提供注解方式验证权限

5、 总结验证权限方式(四种)

6、 用户注销

7、 基于treegrid实现菜单展示

2 常见的权限控制方式

2.1 url拦截实现权限控制

shiro基于过滤器实现的

2.2 注解方式实现权限控制

底层:代理技术

3 基于shiro的url拦截方式验权

/js/** = anon

/images/** = anon

/css/** = anon

/login.jsp = anon

/validatecode.jsp* = anon

/userAction_login.action = anon

/pages/base/standard.jsp =perms["standard_page"]

/pages/base/courier.jsp = roles["admin"]

/** =authc

访问:使用权限过滤器perms 拦截到用户请求后,而当前用户没有任何权限。

4 在realm中授权

通过url控制权限:当某个请求需要进行权限校验,角色校验时候,安全管理器会调用reaml中授权的方法;获取用户角色,以及权限。

/**

* @Description: 给用户进行授权

*/

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

System.out.println("给用户授权");

//获取当前用户

User user = (User) SecurityUtils.getSubject().getPrincipal();

//数据库结构 用户-角色:多对多  角色-权限:多对多  可以根据用户id查询用户权限

//TODO 给用户授权只能是硬编码  ,后期改为查询数据库

//创建简单授权信息(包含当前用户对应的权限,角色)

SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();

//添加权限标识,注意这里不能添加空白权限

//跟过perms滤器中,要求权限标识一样

info.addStringPermission("courier_page");

info.addRole("admin");

return info;

}

1 基于shiro的注解方式验权

1.1 开启shiro注解支持

1.2 在Service中方法上使用shiro注解

验证当前用户是否有权限,当没有权限时候,shiro框架抛出异常;

解决:在Realm中给用户进行授权;给当前用户增加权限即可

1.3 使用struts2框架处理异常信息

2 总结权限控制方式

1、 url拦截:底层基于过滤器;在spring容器中配置过滤器链,配置项目中url对应拦截规则,注意:配置顺序

2、 注解方式:底层基于动态代理

a) 第一步开启shiro注解扫描注意:强制使用cglib方式;事务注解也要使用cglib方式

b) 第二步:在service层中方法上使用shrio注解

3、 Shiro页面标签控制

4、 代码级别

3 Shiro框架应用

1 基于shiro框架实现用户注销

1、 修改index.jsp页面退出时的请求地址

2、 在Action中提供logout方法

2 菜单的查询

项目部署后,菜单数据,通过sql脚本直接添加到数据库中。

菜单表自关联;

1.1 treeGrid展示菜单数据

Treegrid要求的数据格式

1、 页面:pages/system/menu.jsp

2、 创建菜单三层对象-完成注入–略

3、 问题一:由于要求返回json包含children 并且方式出现No-session

4、 解决:将子节点数据立即加载

5、 转json数据时候死循环

6、 问题:重复数据

Servie”:

JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理

1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...

在realm中动态查询用户的权限&;角色

@Controller @Scope("prototype") @Namespace("/") @ParentPackage("struts-defa ...

项目一:第十三天 1、菜单数据管理 2、权限数据管理 3、角色数据管理 4、用户数据管理 5、在realm中动态查询用户权限,角色 6、Shiro中整合ehcache缓存权限数据

1 课程计划 菜单数据管理 权限数据管理 角色数据管理 用户数据管理 在realm中动态查询用户权限,角色 Shiro中整合ehcache缓存权限数据         2 菜单数据添加 2.1 使用c ...

第十九章 动态URL权限控制——《跟我学Shiro》

目录贴:跟我学Shiro目录贴 用过Spring Security的朋友应该比较熟悉对URL进行全局的权限控制,即访问URL时进行权限匹配:如果没有权限直接跳到相应的错误页面.Shiro也支持类似的机 ...

项目一:第十一天 2、运单waybill快速录入 3、权限demo演示-了解 5、权限模块数据模型 6、基于shiro实现用户认证-登录(重点)

1. easyui DataGrid行编辑功能 2. 运单waybill快速录入 3. 权限demo演示-了解 4. Apache shiro安全框架概述 5. 权限模块数据模型 6. 基于shiro ...

Xianfeng轻量级Java中间件平台:基于RBAC模型实现权限控制的原理

首先,白话一下RBAC模型.RBAC是基于角色的访问控制(Role-Based Access Control)的简称.RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,wh ...

Winform开发框架之字段权限控制

在我的很多Winform开发项目中(包括混合框架的项目),统一采用了权限管理模块来进行各种权限的控制,包括常规的功能权限(按钮.菜单权限).数据权限(记录的权限),另外还可以进行字段级别的字段权限控制 ...

Java利用Mybatis进行数据权限控制

权限控制主要分为两块,认证(Authentication)与授权(Authorization).认证之后确认了身份正确,业务系统就会进行授权,现在业界比较流行的模型就是RBAC(Role-Based ...

随机推荐

Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目

默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...

VBS非规范化参考手册(一)

变量类型: 空型:NULL NULL 布尔型:BOOLEN true false 字节型:Byte 0~255 整形:INTEGER -32768~32767 长整形:LONG -2^32~2^31+ ...

PHP无法编译undefined reference to `libiconv_open

./configure --prefix=/usr/local/php52 make时提示:.....................................................e ...

POJ 2402 Palindrome Numbers

题目链接 水题,LA我居然没找到在那里. #include #include #include #inclu ...

java 流

http://www.iteye.com/magazines/132-Java-NIO http://liyuanning.blog.163.com/blog/static/4573228620101 ...

CF Soldier and Badges (贪心)

Soldier and Badges time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

IIS7.5 APPCMD 简单用法及示例

1 添加应用程序进城池 appcmd.exe add apppool  /name:test.com  /managedRuntimeVersion:"v4.0" /managed ...

Jquery autocomplete 插件使用

轻松实现类似百度输入框联想功能: autocomplete 是一个很厉害的插件,该插件基于jquery,在jquery官网能下载到最新版本. 首先,jQuery UI 是基于 jQuery 的,所以, ...

double hashing 双重哈希

二度哈希(rehashing / double hashing) 1.二度哈希的工作原理如下: 有一个包含多个哈希函数(H1……Hn)的集合.当我们要从哈希表中添加或获取元素时,首先使用哈希函数H1. ...

笔记:Maven 插件及配置详解

插件使用配置 用户能够自己选择将某个插件目标绑定到生命周期的某个阶段上,例如创建项目的源码JAR包,内置的插件绑定关系并没有涉及这个任务,mavent-source-plugin 可以帮助我们完成该任 ...

你可能感兴趣的:(shiro,同时实现url和按钮的拦截)