功能权限控制

应用场景:访问功能授权,查看权限,编辑权限,导入权限,审核权限。

  1. 给方法添加权限标志

@RequiresPermissions("sys:submodule:user:view")
@RequiresUser

  1. 菜单中设置权限标志。
  2. 判断权限:

SecurityUtils.getSubject().isPermitted("sys:user:edit");

  1. 视图中控制按钮(shiro.tld):

<shiro:hasPermission name="sys:user:edit">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>
</shiro:hasPermission>
<!-- 任何一个符合条件的权限 -->
<shiro:hasAnyPermissions name="sys:user:view, sys:user:edit,">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="返 回"/>
</shiro: hasAnyPermissions>

数据权限

应用场景:某用户访问数据范围:公司及子公司,本公司,部门及子部门,本部门,当前用户,明细设置。
// 生成数据权限过滤条件( dsf 为dataScopeFilter的简写,在 xml 中使用 ${sqlMap.dsf}调用权限SQL)
user.getSqlMap().put( "dsf" , dataScopeFilter (user.getCurrentUser(), "o" , "u" ));
<!-- 分页查询用户信息 -->
< select id = "findList" parameterType = "User" resultMap = "userResult" >
SELECT
< include refid = "userColumns" />
FROM sys_user a
< include refid = "userJoins" />
WHERE a.del_flag = '0'
<!-- 数据范围过滤 -->
${sqlMap.dsf}
</ select >
/**
* 数据范围过滤
* @param user 当前用户对象,通过"entity.getCurrentUser()"获取
* @param officeAlias 机构表别名,多个用","逗号隔开。
* @param userAlias 用户表别名,多个用","逗号隔开,传递空,忽略此参数
* @return 标准连接条件对象
*/
String dataScopeFilter (User user, String officeAlias, String userAlias)