功能权限控制
应用场景:访问功能授权,查看权限,编辑权限,导入权限,审核权限。
- 给方法添加权限标志
@RequiresPermissions("sys:submodule:user:view")
@RequiresUser
- 菜单中设置权限标志。
- 判断权限:
SecurityUtils.getSubject().isPermitted("sys:user:edit");
- 视图中控制按钮(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)