angular - 在 Angular 8 中授权资源的最佳方式是什么
问题描述
我正在尝试在角度 8 中处理基于资源(或声明)的授权。我发现了一个CASL角度操作能力管理。
所以,我想在 Angular 8 中使用基于动作的授权来保护所有的 crud 动作。
它也应该是基于声明的授权。但是,我不知道哪个是最好的使用方法。
在 Angular 8 中进行基于动作的授权的最佳方法是什么?
谢谢
解决方案
CASL 似乎是 ACL,并且是在服务器端完成的。它定义了每个资源服务器端的权限。Angular 是一个客户端框架。
“什么是最好的方法”问题通常很快就会结束,因为它是主观的。
如果资源受 ACL、RBAC 或其他保护,则访问资源的方式没有区别。如果 http 请求返回错误,您可以处理响应并输出您想要的任何消息。基于“声明”的身份验证您可能正在考虑 openid-connect/oauth2 或您自己的 JWT 声明发送服务器端的身份验证。
自从您编写了自己的实现后,它就更容易理解了,对吧?但是写和做对需要更长的时间。
我只知道 2 个开源 openid 连接服务器,即keycloak和identityserver4
有 Angular 的库,但都非常不稳定。Manfred Steyer 为 Angular提供了一个通用的 oidc/oauth2 库,但它在代码流方面存在问题,只有密码流和隐式流真正起作用,然后找出静默刷新不起作用的原因变得越来越复杂。Chrome 正在做一个 cookie 安全 SameSite 更新很快TM,这将破坏许多网站。
有一个 keycloak js 适配器和一个 ngx-keycloak 存储库,但它们也有问题,尤其是在到期前再次刷新令牌。
有一些商业提供商的库我没有测试过,比如 auth0 和 okta。
与 ACL 和/或 RBAC 分开开发您自己的身份验证内容在服务器端和客户端都需要时间,但您可以控制一切。您可以模仿一些 oauth2/oidc 功能,例如令牌信息端点,因为您发送的是 JsonWebTokens (JWT)。
分布式越多,你的应用程序就越单一,它也就越复杂。
哪个最好?它总是取决于。
推荐阅读
- html - 管理页面和抽屉角度中的滚动垂直滚动位置
- python - 将 git 密码提供到交互式 shell 的自动化方法
- reactjs - 正在加载 data.json 文件...导致不加载图像但加载了文本内容
- python - 如何在 bash 中使用 python 读取 JSON 密钥
- wordpress - 第二页后的Wordpress搜索结果页面错误
- python - 运行贡献的命令:“qiskit-vscode.runQiskitCode”失败
- flutter - 没有标题的颤振对话框
- spring-boot - requestmapping & getmapping 打印出的对象不是我想要的
- video-streaming - 我无法在 html 上流式传输 MP2T
- wordpress - 我可以将 Cloudflare 的 Brotli 与 .htaccess 文件中包含的 GZIP 一起使用吗?