Asp.net core 学习笔记 (授权)
更新 : 2018-11-24
记入一些思考
asp.net core + identity 的权限是这样的
user = 1 个登入账号
role = 1 个角色 (类似于公司里的一个职位)
claim = 令牌 (类似于古代,见令令牌如见皇帝或者将军)
一般上我们会把权限建立在 Page, 操作, 资源上.
这里我只说操作, 操作指的是一个 api 接口, 一个 controller 或是一个 action
identity 给了我们一个 policy 的概念
一个 policy 就是说,一个对令牌的判断.
比如,如果一个 user 访问用于某几个令牌,就表示它可以执行.
所以 controller 和 action 我们就会写很多对令牌的要求.
常见的是问,请问你有没有 "admin" 这个令牌丫 ?
也可以是, 请问你有没有 "可转账" 这个令牌丫 ?
那么,令牌这么多,要怎样管理呢 ?
我们知道一间公司一定会有很多工作,要分工。
通常我们把工作分组成任务 (task).
比如,管理广告,管理 live chat, 管理网页内容。等等
这些都是任务。
然后我们需要把任务交给某些人做,人来人往我们得找到一个固定的依赖,所以就有了职位这个概念。
所以任务最后都分给了某些职位.
在 identity 管理中,如果我们的职位很少,而且任务没有重叠,我们可以把 claim 当做 role 来用。
当职位变得多, 任务又有重叠 (同样任务,但是 2 个职位都可以做). 我们可以把 claim 设计当 task 来用。
如果真的要分到很细的话,我们可以把每个 action 定义为一个 cliam, 然后设计一个 task 的概念
1 个任务需要调用多个 action, 所以一个 task 需要多个 claim
然后 1 个 role 可以拥有多个 task (一个职位可以拥有多个 task 符合管理)
最后一个 user 可以有多个 roles, 或者直接拥有某些 task
要有 task 的概念,需要对 identity 扩展一些些.
另外说说授权。
一般上一个公司都会有一个 HR 部分.
只有 HR 有能力处理 user account.
比如给予权限等等。但是有一点不要混淆。在系统上开来,HR 的权限很大,他可以 disable 一个 CEO 的账号。
但是其实他只是任命执行操作而已。就好像是一个 sales man 可以创建订单,但前提是客户要购买东西。他并不可以自己提客户下单一样。
HR 有可能会因为区域很大,而分出好几个区。
account 应该是属于某个区的,也就是说 2 个 HR 并不可以互相访问对方的人事。
参考 :
https://www.cnblogs.com/RainingNight/p/authorization-in-asp-net-core.html
https://www.cnblogs.com/RainingNight/p/authorize-how-to-work-in-asp-net-core.html
https://www.cnblogs.com/RainingNight/p/dynamic-authorization-in-asp-net-core.html
这 3 篇基本上已经讲完了.
对比 .net 4.x 主要是多了 policy, requirement, authoService
一个 policy 表示多个 requirement
一个 requirement 表示多种断言, 比如有没有 claim, 有没有 role 等等
同一个 requirement 还能有不同的验证逻辑.
policy 还有一个合并与其它 policy 的能力. 非常灵活.
Asp.net core 学习笔记 (授权)的更多相关文章
- Asp.Net Core学习笔记:入门篇
Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...
- ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...
- Asp.net core 学习笔记 ( identity server 4 JWT Part )
更新 : id4 使用这个 DbContext 哦 dotnet ef migrations add identity-server-init --context PersistedGrantDbCo ...
- Asp.net Core学习笔记
之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...
- ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项
前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...
- Asp.net core 学习笔记 ( Data protection )
参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...
- Asp.net core 学习笔记 SignalR
refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...
随机推荐
- 我是这样做APP的:击中用户的痛点(转)
击中用户的痛点 点评,感觉取名叫做“用户痛点的取舍”更加合适.很多公司.项目的失败完全取决于决策人取舍的失败,一味地追求大而全.迎合上级领导,专断而没有和团队做客观的分析.本文虽然以一个应该来说并不复 ...
- mysql 水平分表技术
这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `us ...
- python base64加解密
加密字符串 encodestr = base64.b64encode("chenglee1234".encode(encoding='utf-8')) 解密字符串 decodest ...
- js导读,js引入,js选择器,事件,操作页面文档,计算后样式,数据类型
js导读 ''' js属于编写运行在浏览器上的脚本语言 js采用ECMAScript语法 操作BOM:浏览器对象模型 eg:浏览器上下滑动,浏览器历史记录 操作DOM:文档对象模型 ''' js引入 ...
- Spring 学习——Spring常用注解——@Component、@Scope、@Repository、@Service、@Controller、@Required、@Autowired、@Qualifier、@Configuration、@ImportResource、@Value
Bean管理注解实现 Classpath扫描与组件管理 类的自动检测与注册Bean 类的注解@Component.@Service等作用是将这个实例自动装配到Bean容器中管理 而类似于@Autowi ...
- 后缀字符串|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
样例输入: 3 ba a aba 样例输出: 2 3 1 思路一:暴力,只能过50%数据,枚举每一个字符串,内层枚举其他字符串判断是否以这个字符串为后缀 思路二:哈希表,存储每一个后缀的数目,stri ...
- hihoCoder week7 完全背包
完全背包 题目链接 https://hihocoder.com/contest/hiho7/problem/1 #include <bits/stdc++.h> using namespa ...
- 今天的任务--git练习
克隆远程仓库项目 从版本控制中选择git 填写地址和本地目录,test测试成功后点击clone 克隆完成回到主界面,点击open打开刚才克隆的项目 git操作 添加文件py1.html 打开命令行 新 ...
- HDU 5723 Abandoned country(最小生成树+边两边点数)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5723 题意:给出一个无向图,每条路都有一个代价,求出把所有城市连通的最小代价.在此基础上,国王会从这 ...
- 手把手教你学习R语言
本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...