说明

  代码及部分相关资料根据慕课网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. 认识一下ES6的Reflect和Proxy

      Reflect Reflect要替代Object的很多方法, 将Object对象一些明显属于言内部的方法放到了Reflect对象上,有13个方法 Reflect.apply(target, thisA ...

    2. PHP_APC扩展dll上传大文件及进度条实例

      1.弄好了APC之后,就是使用它了,下面是个例子,是一个进度条上传的例子,作为笔记记录下来 在这个例子之前,我们需要做如下的设置,如果我们需要上传的是大文件的话,请在您的php.ini文件中做如下的设 ...

    3. 我爱自然语言处理bert ner chinese

      BERT相关论文.文章和代码资源汇总 4条回复 BERT最近太火,蹭个热点,整理一下相关的资源,包括Paper, 代码和文章解读. 1.Google官方: 1) BERT: Pre-training ...

    4. Python--day72--ajax简介

      ajax的基本结构: <script> $("#b1").on("click", function () { $.ajax({ url: " ...

    5. 读取Flex AIR应用程序设置

      说明: 本人之前做过一年的Flex AIR移动跨平台开发,在之前学习过程中,一直是将笔记记在了Evernote上,有的笔记是自己写的,也有的笔记是在网上看到,顺手记下了的. 所以在这里声明下,如果在网 ...

    6. H3C 环路避免机制一:路由毒化

    7. js基础——对象和数组

      1.Object类型 1)使用new运算符    var box = new Object();===>等同于 var box = Object();(省略new关键字)    box.name ...

    8. H3C FTP其他常用命令

    9. Java语言中使用OpenMP

      从去年年中,开始学习Java,主要是维护公司用Java编写的服务器软件.目前,该服务器软件遇到一个问题,在下载大文件时,如果同时下载的用户很多, 服务器软件工作会出现异常,有的用户无法下载.服务器硬件 ...

    10. linux进程唤醒的细节

      我们已展现的唤醒进程的样子比内核中真正发生的要简单. 当进程被唤醒时产生的真正动 作是被位于等待队列入口项的一个函数控制的. 缺省的唤醒函数[22]22设置进程为可运行的 状态, 并且可能地进行一个上 ...