@iEricLee Creation Time : 2023-05-31 20:32:24 Last Modification Time : 2023-05-31 20:43:35
来自 ABP Framework 研习社 @/shd
的提问和群友的回复:
实际项目中通常不会对 WebAPI 做用户角色权限。可以将问题拆分为两个小问题来分析:
为了更好地解释以上两个问题,绘制了一张图来表示与用户-角色-权限相关的应用模块之间的关系。
图中一共六个应用模块:Account
IdentityServer
OpenIddict
Identity
Users
Permission-Management
。依赖关系很好理解,依赖模块是在被依赖模块基础上构建,功能叠加;扩展关系其实就是功能适配,以权限管理为例,在 Identity
应用模块中提供权限管理适配程序集,就可以实现对 Identity
进行权限管理, OpenIddict
和 IdentityServer
应用模块也是如此权限管理功能的兼容。
好了,先回答第一个问题:如何快速实现用户角色权限管理?
只需要在项目中加入 Identity
应用模块依赖即可,该模块中包含用户列表、角色列表,通过扩展支持对用户和角色进行权限设置,所以只需在项目中引入 Identity
应用模块即可快速实现用户-角色-权限管理。
接下来第二个问题:如何对 WebAPI 进行权限控制?
WebAPI 权限是端到端的权限控制,即某个应用(客户端)是否有权限访问 WebAPI (资源提供端)。通常需要一个认证和权限中心为客户端颁发访问令牌,客户端携带访问令牌发起对资源提供端的访问请求,资源提供端将接收到的令牌发送到认证和授权中心去验证是否有访问权限。
如果要实现认证和权限中心,在 ABP Framework 中有两种方案:IdentityServer
应用模块 和 OpenIddict
应用模块都能开箱即用,实现支持 OAuth 2.0 和 OpenId Connect 协议的认证和授权中心。
正如群友提供的建议推荐使用 OpenIddict
,该方案开源免费,可获得长期升级更新支持。
另外在补充一下 Account
应用模块,引用该应用模块直接在项目中添加用户登陆、注册、找回密码等帐户管理功能。
默认启动模板集成了完整的功能,但是我们应该清楚,这些功能是通过哪些应用模块提供的。
QQ群:ABP Framework 研习社
专注 ABP Framework 学习及DDD实施经验分享;示例源码、电子书共享,欢迎加入!
公众号:dotNET兄弟会
专注.Net开源技术及跨平台开发!致力于构建完善的.Net开放技术文库!为.Net爱好者提供学习交流家园!
网站:知识乐,基于 ABP Framework 搭建的学习社区,目前上线系列教程和博客频道: