mysql - 授权 - 如何检查网络应用程序中的用户权限?

标签 mysql web-applications authorization

我有一个简单直接的授权实现。好吧,我只是认为我这样做,并且我想确保这是正确的方法。

在我的数据库中,我有如下表:usersrolesuser_rolepermissions role_permissionuser_permission

当我创建一个用户的时候,我当然是给他一个角色,这个角色已经有一些权限了。显然,我想检查的权限不是此处角色的权限,但我很好奇是否应该仅从 role_permission 表检查这些权限,还是检查 user_permission我认为,它更加灵活,因为用户可以从role_permission表中默认授予一些权限,然后管理员可以稍后添加、删除权限。

我认为第二种方法更好,我想问我是否正确,应该这样做吗?我不确定是否将 user_permission 表的内容复制到 user_permissions 表中。也许我应该采取另一种方式,我认为这一步有点奇怪。

请帮忙

最佳答案

老实说,您正在重新发明轮子,因此您应该查看现有的解决方案,以便在您使用的任何技术中做到这一点。获得正确的安全性很困难,因此您应该尽可能利用该领域专家提供的内容。

话虽如此,我个人不会允许将个人权限与组权限分开。如果您这样做并且拥有多个用户,那么这将成为管理上的噩梦。想象一下这样的场景:在软件的某个部分发现了一个严重的错误,并且必须没有人使用它。您进去并从所有角色中删除该权限...工作完成了吗?但不可以,某人被单独授予该角色并且仍然可以访问它。您还需要维护所有额外的代码和复杂性,以允许不同的角色。

这只是一个示例,但希望它能展示您开始允许的一些复杂情况。

由于每个用户具有多个角色,因此您可以通过定义和使用适当的角色来使用个人权限来完成任何操作。

顺便说一句,如果您正在缓存用户权限,请记住,当用户角色更改和角色权限更改时,您将需要更新该缓存。

关于mysql - 授权 - 如何检查网络应用程序中的用户权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836491/

相关文章:

php - 来自 PHP/MySQL 的 Facebook API 日报

javascript - ActiveXObject 并未为除 IE 之外的所有浏览器定义

ember.js - 根据用户权限显示/隐藏内容的最佳方法

nginx - 如何将 auth_request 发送到 nginx 中的可变 URI?

mysql - Django 对象获取小数匹配

php - Routeboxer 服务器端

mysql - 如何使用 SQL 中的 CASE WHEN 根据另一列的值更新列值

web-applications - 如果应用程序停止, quartz 调度程序将获取下一个调度程序时间

asp.net - 为什么我不应该将我的 asp.net 网站或 webapp 部署到 IIS 中域的根目录?

asp.net-core - 如何在 JWT token 中包含声明?