1,授权中涉及的一些概念
     [1]授权:访问控制,即在应用中认证用户能否访问的系统资源(如一个页面,一个按钮等)。
     [2]资源:在Web应用中反应为用户可以访问的URL。
     [3]权限:表示用户在应用中是否能够访问某个资源。
     [4]角色:权限的集合。
 
2,Shiro授权方式
     [1]编程式
     [2]注解式
     [3]jsp/gsp标签式
 
3,Shiro默认拦截器
     Shiro内置了很多默认的拦截器,比如身份验证,授权等相关的。默认拦截器可以参考org.apache.web.filter.mgt.DefaultFilter中的枚举拦截器。
 
 
4,Shiro授权流程
     [1]授权需要继承 AuthorizingRealm 类(该类继承自 AuthenticationRealm 类),并重写其 doGetAuthorizationInfo() 方法。
  

  

         
     
     [2]多Realm授权的通过标准,多Realm应用下,使用ModularRealmAuthorizer授权器,只要有一个Realm授权就算通过。在ModularRealmAuthorizer循环授权的时候,还是走的第[1]条的流程,所以不用担心。
  

############################### Shiro jsp标签库 ##########################################
Shiro 提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据认证用户相应的页面按钮。
首先,需要导入标签库:
<%@ taglib uri="http://org.apache.shiro/tags" uri="shiro" %>
 
1,guest标签
     游客登陆时,显示标签体内的内容。
2,authenticated标签
     用户认证通过,显示标签体内的内容。
3,noAuthenticated标签
     用户未通过认证(包括【记住我】方式登陆),显示标签体内的内容。
4,principal标签
     显示用户身份信息,如果realm传递的principal是一个对象,可以使用该标签的property来显示具体属性的值。
5,hasRole和hasAnyRoles
     拥有指定的角色,显示标签体内的内容。
6,lacksRole
     没有指定的角色,显示标签体内的内容。
7,hasPermissioin和hasAnyPermissions
     拥有指定的权限,显示标签体内的内容。
8,lacksPermission
     没有指定的角色,显示标签体内的内容。
 
 
 
############################### Shiro 注解 ##########################################
shiro注解用在Service和Controller层,但是如果Service层有事物注解,那么shiro注解要放在Controller层。因为两个代理对象在类型转换时会出现异常。
 
1,RequiresAuthentication
     要求用户已经被认证过。
2,RequiresGuest注解
     要求访客才能访问。
3,RequiresPermissions
     要求拥有指定的权限。
4,RequiresRoles
     要求拥有指定的角色。
 
如果达不到注解所需要的要求,会抛出异常。

Shiro授权流程的更多相关文章

  1. 菜鸟手把手学Shiro之shiro授权流程

    一.首先我们从整体去看一下授权流程,然后再根据源码去分析授权流程.如下图: 流程如下: 1.首先调用 Subject.isPermitted*/hasRole*接口,其会委托给 SecurityMan ...

  2. shiro框架学习-2-springboot整合shiro及Shiro认证授权流程

    1. 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  3. frame shiro 授权及原理简述

    shiro 授权模式 shiro采用的是rbac授权模式rbac,基于角色的权限管理,谁扮演什么角色,被允许做什么事情. shiro 授权流程 shiro 授权方式 1.编程式 通过写if/else授 ...

  4. Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程(zz)

    授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).  在权限认证中,最核心的是:主体/用户(Subject).权限(Permission).角色(Role).资源 ...

  5. Shiro授权认证原理和流程

    先来张图: 这是一张shiro的功能图: Authentication: 身份认证/登录,验证用户是否拥有相应的身份 Authorization: 授权/权限验证,验证某个已认证的用户是否拥有某个权限 ...

  6. 跟开涛老师学shiro -- 授权

    授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission).角 ...

  7. shiro基础学习(三)—shiro授权

    一.入门程序 1.授权流程        2.授权的三种方式 (1)编程式: 通过写if/else 授权代码块完成. Subject subject = SecurityUtils.getSubjec ...

  8. 第三章:shiro授权认证

    授权:也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等). 主体:即访问应用的用户,在Shiro中使用Subject代表该用户.用户只有授权后才允许访问相应的资源. 资源 ...

  9. Shiro笔记(五)Shiro授权

    Shiro授权 也叫访问控制,即在应用中控制谁能访问那些资源(如访问页面.编辑数据.页面操作等).在授权中需要了解几个关键对象:主体(subject).资源(resource).权限(Permissi ...

随机推荐

  1. Survey Report on Data Skew in Big Data

    1 Introduction 信息时代产生了大量的数据,运用和使用数据已经成为一个公司乃至一个国家核心实力的重要组成部分.当代大数据一般指的是:数据量巨大,需要运用新处理模式才能具有更强的决策力.洞察 ...

  2. Rainyday.js – Rendering Raindrops with JavaScript

    Posted · Category:GPL License,Tools 直击现场 The idea behind Rainyday.js is to create a JavaScript libra ...

  3. web开发常用正则表达式

    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数 ...

  4. shell多线程(3)while循环

    start="2018-06-17" end="2018-07-01" min=`date -d "${start}" +%Y%m%d` m ...

  5. 函数式编程里的Materialization应该翻译成什么?

    Materialization是函数式编程里的一个专业术语, 用于特指函数式编程中查询被实际执行并生成结果的这一过程. 首先, 搜了一下中文资料, 暂时没有对该词的中文翻译,  CSDN\博客园\阿里 ...

  6. http-post调用接口简单代码

    一.简单便捷的httpget调用接口,并且返回接口数据1.导入相应的jar包: 2.代码如下: HttpPost post = null; try { HttpClient httpClient = ...

  7. Mysql常用的查询语句,记录一下,好东西大家共享

    一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...

  8. JavaWeb入门_模仿天猫整站Tmall_SSM实践项目

    Tmall_SSM 技术栈 Spring MVC+ Mybatis + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...

  9. PATA 1006. Sign In and Sign Out (25)

    #include <bits/stdc++.h> using namespace std; const int N = 100005; struct visitor{ char ID[20 ...

  10. Apicloud 接入海康摄像头

    1准备工作 , 加载apicloud 海康视频模块. 引入 SDK 重新生成项目测试 再config.xml写入appid 话不多说直接上代码 video=api.require("haik ...