shiroWeb项目-授权(十一)

使用PermissionsAuthorizationFilter

在applicationContext-shiro.xml中配置url所对应的权限。

测试流程:

1、在applicationContext-shiro.xml中配置filter规则

<!--商品查询需要商品查询权限  -->

/items/queryItems.action = perms[item:query]

2、用户在认证通过后,请求/items/queryItems.action

3、被PermissionsAuthorizationFilter拦截,发现需要“item:query”权限

4、PermissionsAuthorizationFilter调用realm中的doGetAuthorizationInfo获取数据库中正确的权限

5、PermissionsAuthorizationFilter对item:query 和从realm中获取权限进行对比,如果“item:query”在realm返回的权限列表中,授权通过。

创建refuse.jsp

如果授权失败,跳转到refuse.jsp,需要在spring容器中配置:

Realm中进行授权

// 用于授权
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

        // 从 principals获取主身份信息
        // 将getPrimaryPrincipal方法返回值转为真实身份类型(在上边的doGetAuthenticationInfo认证通过填充到SimpleAuthenticationInfo中身份类型),
        ActiveUser activeUser = (ActiveUser) principals.getPrimaryPrincipal();

        // 根据身份信息获取权限信息
        // 从数据库获取到权限数据
        List<SysPermission> permissionList = null;
        try {
            permissionList = sysService.findPermissionListByUserId(activeUser.getUserid());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 单独定一个集合对象
        List<String> permissions = new ArrayList<String>();
        if (permissionList != null) {
            for (SysPermission sysPermission : permissionList) {
                // 将数据库中的权限标签 符放入集合
                permissions.add(sysPermission.getPercode());
            }
        }

        // 查到权限数据,返回授权信息(要包括 上边的permissions)
        SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
        // 将上边查询到授权信息填充到simpleAuthorizationInfo对象中
        simpleAuthorizationInfo.addStringPermissions(permissions);

        return simpleAuthorizationInfo;
    }
时间: 2024-11-25 07:57:47

shiroWeb项目-授权(十一)的相关文章

模板项目授权说明

现在的模板默认为项目授权,如果不想按项目授权则可以设置xml里属性 right="N"   <BILLC_PROJECT  right="N"   desc="承担项目"  name="报销明细,承担项目:"  ini_data="Y" divsior="▓BILL_PROJECT▓" formula="//SaveTable/TBILL/BILL_PROJECT&quo

安装Git服务&amp;使用Gitosis管理成员、项目并做项目授权(上)

转自:安装Git服务&使用Gitosis管理成员.项目并做项目授权 这是一篇实际的操作文档,里面的大部分图都是自己亲手截屏,力求达到真实并希望帮助到更多的遇到类似问题的困惑者.如果遇到问题,可以直接在文章最下面联系到我,也欢迎拍砖. 弄清楚关键词眼与概念 裸仓库(bare repository) 即一个没有当前工作目录的仓库.因为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照:仓库里存放的仅仅是 Git 的数据.简单地说,裸仓库就是你工作目录中 .git 子目录内的内容. 补充一下

安装Git服务&amp;使用Gitosis管理成员、项目并做项目授权(下)

2.从 Gitosis 项目主页克隆并安装 有可能你clone不成功,报socket连接失败  那么,你可以去Github项目主页克隆 可是,克隆Github主页也报错,这时需要在你的机器上使用ssh-keygen命令生成公钥与私钥,然后发布到Github上去.  将生成的公钥发布到Github(你得有个Github账号呀)上.  添加成功后的效果  再次克隆没有问题  安装几个供 Gitosis 使用的工具  3.初始化Gitosis 创建用于管理我们的Gitosis项目的用户(Github主

BOS物流项目第十一天

教学计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 a.  在spring文件中配置开启shiro注解支持 b.  在Action方法上使用注解 3.使用shiro的标签进行权限控制 a.  在页面引入shiro的标签库 b.  在页面中使用标签 4.总结shiro提供的权限控制方式 a.  URL拦截权限控制 b.  方法注解权限控制 c.  页面标签权限控制 d.  代码级别权限控制(了解) 5.权限管理 a.  初始化权限数据 b.  添加权限功能 c.  权限

[项目构建 十一]babasport 购物车的原理及实现.

今天来开始写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码  问:购物车商品还在吗? 4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器  登陆用户名和密码 问:购物车商品还在吗? 上面四个问题都是

暑期项目经验(十一)--网页中文乱码问题

网页中文乱码问题 做项目时,不可避免的会碰到中文显示为乱码为问号的情形.网上讲得方法很多,不尽相同.反正我的做法是: 1.修改tomcat中server.xml, 找到Connectotr,在里面加上URIEncoding="UTF-8" <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443

shiroWeb项目-记住我(自动登陆实现)(十五)

用户登陆选择"自动登陆"本次登陆成功会向cookie写身份信息,下次登陆从cookie中取出身份信息实现自动登陆. 用户身份实现java.io.Serializable接口便于反序列化 package cn.qlq.springmvc.pojo; import java.util.Iterator; import java.util.List; import com.sun.org.apache.bcel.internal.generic.NEW; /** * 用户身份信息,存入ses

shiroWeb项目-登陆与退出实现(九)

原理 使用FormAuthenticationFilter过虑器实现 ,原理如下: 将用户没有认证时,请求loginurl进行认证,用户身份和用户密码提交数据到loginurl FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的) FormAuthenticationFilter调用realm传入一个token(username和password) realm认证时根据username查询用户信息(在Activ

SSM商城项目(十一)

1.   学习计划 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 Ajax跨域请求(jsonp) 2.   Sso系统工程搭建 需要创建一个sso服务工程,可以参考e3-manager创建. e3-sso(pom聚合工程) |--e3-sso-interface(jar) |--e3-sso-Service(war) e3-sso-web 3.   服务接口实现 3.1. 检查数据是否可用 3.1.1.    功能分析 请求的url:/user/check/{p