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”:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值