Shiro授权(Authorization)

术语简介

1.授权(Authorization)
授权(也称为访问控制)是确定是否允许用户/主体做某事的过程。它通常通过检查和解释主体的角色和权限(见下文),然后允许或拒绝访问所请求的资源或功能来完成。
2.主体
主体及访问应用的用户,在Shiro中使用subject代表改用户,用户只有授权后才允许访问
3.资源
在应用用户可以访问的任何东西比如访问JSP页面查看/编辑数据,访问某一个业务方法,打印文本等等都是资源.
4.权限(Permission)
A权限,至少在Shiro解释它时,是一个描述应用程序中的原始功能的声明,仅此而已。权限是安全策略中的最低级别构造。它们仅定义应用程序可以执行的“操作”。他们没有描述“谁”能够执行这些操作。权限只是一种行为陈述,仅此而已。 一些权限示例:
打开一个文件查看“/ user / list”网页打印文件删除’jsmith’用户
5.角色(Role)
的定义可能因您与之交谈的人而异。在许多应用程序中,人们用它来隐含地定义安全策略,这是一个模糊的概念。Shiro更喜欢将Role解释为一个命名的Permissions集合。就是这样 - 聚合一个或多个权限声明的应用程序唯一名称。 这是一个比许多应用程序使用的隐式定义更具体的定义。如果您选择让您的数据模型反映Shiro的假设,您会发现在控制安全策略方面您将拥有更多的权力。

授权(Authorization)

在这里插入图片描述
一、授权的核心概念
授权,也就是权限认证或访问控制,即在应用中控制谁能访问哪些资源
授权中的核心要素:
1 用户,在shiro中代表访问系统的任何客户端,即subject
2 角色,是权限的集合,或字符串值表示的一种能力。
3 权限,即操作资源的权利。比如访问某个页面,以及对某功能模块的添加、修改、删除、查看的权利
二、授权方式
1、编程式授权
基于角色(role)的编程式授权、基于权限(permission)的编程式授权
2、注解授权
@RequiresAuthentication 要求subjejct已经通过了身份认证
@RequiresGuest 要求当前subject是一个"guest",即subject必须是没有被记住且没有通过身份认证
@RequiresUser 要求当前subject是一个用户,可以是被记住(rememberMe)的,或者是通过了身份认证的
@RequiresRoles 要求当前subject必须拥有相应角色,value可为一个String集合,默认是And关系。可以标记在类和方法上。
@RequiresPermissions 要求当前subject必须拥有相应权限,value可为一个String集合,默认是And关系。可以标记在类和方法上。
三、权限粒度
资源级别
单个权限:query
单个资源多个权限: user:query user:add 多值user:query,add
单个资源所有权限: user:query,user:add,user:update,user:delete 所有user:*
所有资源的某个权限: :view
实例级别
单个实例的单个权限 printer:query:lp7200 printer:print:epsoncolor
所有实例的单个权限 printer:print:

所有实例的所有权限 printer::
单个实例的所有权限 printer:*:lp7200
单个实例的多个权限 printer:query,print:lp7200
printer 等价于 printer::
printer:print 等价与 printer:print:*

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页