shiro的功能:验证,授权,会化管理,加密
三个核心的组件:Subject,SecurityManager,Realm
框架的应用
导入相关的jar包
在web.xml中配置安全过滤器(注意此过滤器一定要放在struts2过滤器前面)
添加配置shiro的spring配置文件
在进行认证操作的时候通过参数AuthenticationToken arg0获取到令牌,里面封存着登录页面传递过来的用户名和密码,这样就可以通过转换在realm中进行逻辑判断
记得在reaml中引入empBiz的逻辑业务,并且注入到realm的bean
不要忘了要把登录成功后的用户信息存储到session中
授权的应用
授权的方法同样存在在自定义的realm类中,执行授权逻辑业务的时候需要把权限控制的业务逻辑引用到realm中
同样在shiro的配置文件中引入
编写实现授权的代码
在shiro的配置文件中URL访问策略中添加所有的URL权限,但是有的时候多个权限公用一个URL地址,此时只有用户同时具有这两种权限的时候才能发挥作用它们之间是并且的关系,所以我们需要自己定义授权过滤器来将它们的关系变成或的
配置文件中的配置首先添加自定义授权过滤器的bean
在shiro安全过滤器中添加属性为filters的过滤器集合,将自定义授权过滤器放置到里面并且添加依赖关系
细颗粒权限控制,方法级别的授权,我们需要在配置文件中添加配置开启shiro的注解
然后要对哪个方法加以授权控制的话只需在方法的上面个加上注解即可
细颗粒权限控制 – 代码级别的授权
我们现在的权限控制目前有一处存在问题,看下面截图
红框中的设置,采购申请和销售订单录入都需要调用add 方法 ,对于这种情况,我们需要更细级别的控制,要在代码中进行控制。采购申请传过来的参数是1,销售订单录入传过来的参数2 ,在URL级别控制没办法加参数。这种情况下我们需要在代码中进行权限控制
获得subject 后用isPermitted方法可以判断当前用户是否具有某权限,如果没有权限则抛出自定义异常,在action捕获异常
标签级别的授权
密码加密