一、前端页面权限控制
技术:使用shiro标签进行权限控制
示例:
<shiro:hasPermission name="auth.application.add">
jsp code
</shiro:hasPermission>
控制方式详解:
1、在jsp页面中引入shiro标签库
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
2、在页面中使用标签
<shiro:hasPermission name="auth.application.add">
jsp code
</shiro:hasPermission>
二、后台控制器权限控制
技术:使用shiro注解权限控制
示例:
@RequiresPermissions(value = {"application:save"}, logical = Logical.OR)
A、控制方式详解:
-
在spring配置文件spring-config-mvc.xml中配置开启shiro注解支持
-
配置事务注解,强制使用cglib代理
<tx:annotation-driven proxy-target-class=”true” transaction-manager=”transactionManager” />备注:项目已声明,无需再次配置。
-
在controller配置注解
B、注解详解:
1、功能释义
@RequiresPermissions注解要求当前的Subject被允许一个或多个权限,以便执行注解的方法。
2、参数声明:
logical=Logical.OR 表示设置多个权限;
格式:
```
@RequiresPermissions(value={"xxx:xxx","xxx:xxx"},logical=Logical.OR)
```
3、注解分析
```
该注解相当于接下来基于Subject的逻辑:
public void createAccount(Account account){
Subject currentUser = SecurityUtils.getSubject();
if(!subject.isPermitted("xxx")){
throw new AuthorizationException(...);
}
//Subject is guaranteed to be permitted here
...
}
```