说明

  代码及部分相关资料根据慕课网Mark老师的视频进行整理。

  其他资料:

基础概念

Authenticate/Authentication(认证)

  认证是指检查用户身份合法性,通过校验用户输入的密码是否正确,判断用户是否为本人。

  有几个概念需要理解:

  • Principals (主体标识)

    任何可以唯一地确定一个用户的属性都可以充当principal,例如:邮箱、手机号、用户ID等,这些都是与用户一一对应的,可以唯一地确定一个用户。

  • credentials (主体凭证)

    credentials是能确认用户身份的东西,可以是证书(Certificate),也可以是密码(password)。

  • token(令牌)

    这里的token和api里的token有一点儿差别,这里token是principal和credential的结合体或者说容器。这里先讲一部分,剩下的放到"Subject"讲解。

Authorize/Authorization(授权)

  shiro中的“授权”,更贴切说法是“鉴权”,即判定用户是否拥有某些权限,至于拥有该权限在业务上有何意义,则是由业务本身来决定。

  关于“授权”,shiro引入了两种概念:

  • Role (角色)

    角色用来区分用户的类别。角色与用户间是多对多的关系,一个用户可以拥有多个角色,如Bob可以同时是admin(管理员)和user(普通用户)。

  • Permission (权限)

    权限是对角色的具体的描述,用于说明角色在业务上的特殊性。如admin(管理员)可以拥有user:delete(删除用户)、user:modify(修改用户信息)等的权限。同样的,角色与权限是多对多的数量关系。

    shiro权限可以分级,使用":"分割,如delete、user:delete、user:info:delete。可以使用"*"作通配符,例如可以给admin赋予操作用户的所有权限,可以配置为"user:*",这样在授权时,isPermitted("user:123")、isPermitted("user:123:abc")都是返回true;如果配置为"*

    shiro采坑指南—基础概念与实战的更多相关文章

    1. 【shiro】一、基础概念

      来源:http://blog.csdn.net/swingpyzf/article/details/46342023/ &&&& http://jinnianshilo ...

    2. 采坑指南——k8s域名解析coredns问题排查过程

      正文 前几天,在ucloud上搭建的k8s集群(搭建教程后续会发出).今天发现域名解析不了. 组件版本:k8s 1.15.0,coredns:1.3.1 过程是这样的: 首先用以下yaml文件创建了一 ...

    3. 小程序:web-view采坑指南

      最近负责开发的[广州医保查询]小程序已经发布上线,其中使用web-view组件完成的[在线绑定社保卡]核心流程,遇到了一些坑,现总结如下: 首先,让我们一起看看什么是web-view ? 小程序api ...

    4. rabbitmq在ios中实战采坑

      1. rabbitmq在ios中实战采坑 1.1. 问题 ios使用rabbitmq连接,没过多久就断开,并报错.且用android做相同的步骤并不会报错,错误如下 Received connecti ...

    5. 『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)

      0.前言 深度学习用的有一年多了,最近开始NLP自然处理方面的研发.刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程. 本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内 ...

    6. Rust入坑指南:核心概念

      如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...

    7. Spring WebSocket踩坑指南

      Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...

    8. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

      C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

    9. Rust入坑指南:鳞次栉比

      很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...

    随机推荐

    1. SCSS语法格式及编译调试

      一.SASS编译 Sass 的编译有多种方法: 命令编译 GUI工具编译 自动化编译 1.1 命令编译 1)单文件编译 sass <要编译的Sass文件路径>/style.scss:< ...

    2. laravel 中使用tinker注入数据到数据库

    3. 【原生JS】写最简单的图片轮播

      非常简单的一个大图轮播,通过将控制显示位置来进行轮播效果,写来给正在学习的新手朋友们参考交流. 先看效果:(实际效果没有这么快) 先看布局: <div id="display" ...

    4. 最长上升子序列问题 nlogn 实现算法的简述

      首先举个例子说明最长上升子序列(longest increasing subsequence 缩写 LIS): 1,4,6,2,3,7,5 中1,2,3,5 和1,4,6,7都是最长上升子序列,长度均 ...

    5. H3C DHCP地址分配方式

    6. 分析JVM动态生成的类

      总结思考:让jvm创建动态类及其实例对象,需要给它提供哪些信息? 三个方面: 1.生成的类中有哪些方法,通过让其实现哪些接口的方式进行告知: 2.产生的类字节码必须有个一个关联的类加载器对象: 3.生 ...

    7. linux 不用 ioctl 的设备控制

      有时控制设备最好是通过写控制序列到设备自身来实现. 例如, 这个技术用在控制台驱动 中, 这里所谓的 escape 序列被用来移动光标, 改变缺省的颜色, 或者进行其他的配置任 务. 这样实现设备控制 ...

    8. VScode快捷键(最全)

      按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick Open Ctrl + ...

    9. classpath*与classpath

      classpath*:的出现是为了从多个jar文件中加载相同的文件. classpath:只能加载找到的第一个文件.

    10. Spring Boot 各Starter介绍

      原文链接:https://blog.csdn.net/u014430366/article/details/53648139 Spring-Boot-Starters 最通俗的理解- jar 包,引用 ...