.NET云原生架构师训练营(权限系统系统演示EntityAccess)
EntityAccess
实体权限属性权限
实体权限
创建学生
https://localhost:7018/学生/dotnetnb2
获取学生
https://localhost:7018/学生
保护学生权限,创建实体权限。创建为true,删除和更新为false。
https://localhost:7018/权限/实体参数
{ ‘key’: ‘student-entity-create’, ‘group’: ‘ApplicationDbContext’, ‘displayName’: ‘student-entity-create’, ‘description’: ‘新权限’, ‘resources’: [ ‘DotNetNB . WebApplication.Models.Student’], ‘数据’: { ‘entityName’: ‘DotNetNB.WebApplication.Models.Student’, ‘创建’: true, ‘删除’: false, ‘members’: [ { ‘memberName’: ‘年龄’, ‘更新’: false } ] }}
创建完成后,获取权限,可以看到创建的学生实体创建的权限。
https://localhost:7018/权限
创建权限后,再创建student,会抛出AuthenticationException,无法认证。
https://localhost:7018/学生/dotnetnb2
这是Intersect在SavingChangesAsync时通过dbcontext实现的,因为访问接口时不带token。
if (!createPermission.Intersect(claimValues).Any()) throw new AuthorizationException();获取令牌
https://localhost:7018/身份验证/登录
然后将token放在学生请求的header后面,会抛出AuthorizationException,表示未授权。
https://localhost:7018/学生/dotnetnb2
表示登录成功,认证完成,但是没有相关权限,因为token中不包含student-entity-create的权限。
给用户添加权限。由于admin用户具有admin角色,因此只需为admin角色添加权限即可。
https://localhost:7018/权限/addtorole?角色=adminpermission=学生实体创建
添加权限后,需要重新获取token。
https://localhost:7018/身份验证/登录
解析token,可以看到包含student-entity-create的权限
使用这个token创建学生,创建就会成功。
https://localhost:7018/学生/dotnetnb2
获取所有同学,可以看到多了一个dotnetnb2
https://localhost:7018/学生
但是这个token并没有赋予delete权限,所以delete会抛出AuthorizationException,没有被授权。
https://localhost:7018/学生/dotnetnb2
因为之前的权限中的delete是false
‘delete’: false,您需要添加另一个包含删除权限的权限:student-entity-create-and-delete
https://localhost:7018/权限/实体参数
{ ‘key’: ‘student-entity-create-and-delete’, ‘group’: ‘ApplicationDbContext’, ‘displayName’: ‘student-entity-create-and-delete’, ‘description’: ‘添加删除权限’ , ‘资源’: [ ‘DotNetNB.WebApplication.Models.Student’ ], ‘数据’: { ‘entityName’: ‘DotNetNB.WebApplication.Models.Student’, ‘创建’: true, ‘删除’: true, ‘ 成员’: [ { ‘memberName’: ‘年龄’, ‘update’: false } ] }}
创建完成后,获取权限。您可以看到学生实体创建和删除的权限。
https://localhost:7018/权限
直接将该权限授予用户admin
https://localhost:7018/权限/addtouser?用户名=adminpermission=学生实体创建和删除
再次获取令牌
https://localhost:7018/身份验证/登录
解析令牌并查看它包含student-entity-create-and-delete
使用此令牌成功删除学生
https://localhost:7018/学生/dotnetnb2
获取student,可以发现dotnetnb2已经删除成功
https://localhost:7018/学生
属性权限
调用接口修改student年龄属性会抛出AuthenticationException,未通过认证。
https://localhost:7018/学生/addAge/dotnetnb
登录后使用token请求会抛出AuthorizationException,未授权。
https://localhost:7018/学生/addAge/dotnetnb
因为之前添加的权限无法在age属性上修改
‘members’: [ { ‘memberName’: ‘Age’, ‘update’: false } 需要添加可以修改年龄属性的权限
https://localhost:7018/权限/实体参数
{ ‘key’: ‘student-entity-all’, ‘group’: ‘ApplicationDbContext’, ‘displayName’: ‘student-entity-all’, ‘description’: ‘所有权限’, ‘resources’: [ ‘DotNetNB. WebApplication.Models.Student’],’数据’: {‘entityName’:’DotNetNB.WebApplication.Models.Student’,’创建’: true,’删除’: true,’members’: [{‘memberName’:’年龄’, ‘更新’: true } ] }}
给admin分配权限,重新获取token,然后调用接口修改student的年龄属性
https://localhost:7018/学生/addAge/dotnetnb
修改成功后,再次获取学生。可以看到dotnetnb的age由0变为1,说明修改成功。
用户评论
铁树不曾开花
这.NET云原生架构师训练营听起来好高级啊,特别是权限系统演示,感觉能学到很多实用的东西。
有5位网友表示赞同!
旧事酒浓
权限系统演示这部分,能详细讲讲EntityAccess的具体用法吗?我正好在项目中需要用到。
有9位网友表示赞同!
来瓶年的冰泉
我之前参加过类似的培训,但EntityAccess这部分没接触过,希望能在这个训练营里学到。
有14位网友表示赞同!
素颜倾城
权限系统演示真的很重要,我现在负责的项目权限管理一团糟,这个训练营应该能帮我解决大问题。
有6位网友表示赞同!
何年何念
标题里提到的EntityAccess,我有点好奇它是如何实现权限控制的,期待看到详细讲解。
有19位网友表示赞同!
凝残月
训练营里的权限系统演示,如果能结合实际案例来讲解,那就更好了。
有11位网友表示赞同!
我要变勇敢℅℅
看了这个标题,我立刻想到了我们公司的权限管理问题,希望训练营能提供一些解决方案。
有12位网友表示赞同!
非想
权限系统演示这部分,希望能有实战演练,这样更能加深理解和记忆。
有13位网友表示赞同!
哥帅但不是蟋蟀
我有点担心训练营的难度,毕竟云原生架构师不是那么容易就能成为的。
有8位网友表示赞同!
陌上花
EntityAccess听起来很有技术含量,我希望能通过这个训练营提升自己的技术水平。
有20位网友表示赞同!
清原
权限系统演示如果是通过视频教程,我就能随时学习了,这样更方便。
有19位网友表示赞同!
长裙绿衣
我对.NET云原生架构师训练营很感兴趣,但是价格有点贵,预算有限啊。
有16位网友表示赞同!
花开丶若相惜
权限系统演示这部分,如果能提供一些常见问题的解决方案,那就更完美了。
有18位网友表示赞同!
在哪跌倒こ就在哪躺下
我之前在项目中遇到过权限控制的难题,希望这次训练营能给我带来一些启发。
有13位网友表示赞同!
仰望幸福
EntityAccess听起来很强大,如果能详细讲解它的安全机制就更好了。
有5位网友表示赞同!
花菲
权限系统演示这部分,希望能有代码示例,这样更容易上手。
有6位网友表示赞同!
枫无痕
训练营的权限系统演示如果能有互动环节,那就更棒了,可以及时解决疑问。
有6位网友表示赞同!
生命一旅程
我期待着.NET云原生架构师训练营的开课,希望能在权限系统演示中有所收获。
有18位网友表示赞同!