database - 多重保护认证 VS 用户类型认证
问题描述
我想知道哪种方法更好地使用带有警卫和不同身份验证表的多重身份验证,或者在这种情况下使用具有不同角色/类型的相同身份验证表
假设我们有两个不同的用户类型“医生”和“病人”,他们每个人都有完全不同的个人资料数据
如果我们使用多重身份验证,我们可以将所有用户的数据与身份验证数据设置在同一个表中,但如果我们有一个属于两种用户类型的模型,比如“医院”,我们将重复自己,我们将检查所有地方的警卫。
另一方面,如果我们实现角色或类型,我们必须将配置文件数据拆分为三个单独的表,其中一个用于用户身份验证数据(电子邮件、密码、..etc),与其他用户相关数据具有多态关系,比如说(患者-数据和医生数据),但我们必须在使用用户数据的任何地方加入。
可能有更好的解决方案,我知道没有绝对正确的解决方案我正在根据以前的经验在性能和扩展可能性方面寻找答案。
解决方案
我总是使用身份验证部分的角色/权限方式。这样您就可以通过一种方式登录。
您可以拆分登录表单,也可以对所有角色使用相同的表单。根据他们的角色,您可以将他们重定向到另一个页面,他们可以在其中看到他们的操作。例如,单独的供应商仪表板。当然,您可以使用不同的登录 URL,只允许用户以特定角色登录。这是对当前登录流程的一个小调整,只需检查角色即可。如果需要,您甚至可以为它创建自己的控制器。
您始终可以根据用户的当前角色使用中间件或权限来确定他们可以去哪里或可以看到什么。
多重身份验证总是使它更复杂,而在您的情况下,您只有登录但具有不同权限的用户
推荐阅读
- ios - 如何在swift ios中创建指定的数据结构?
- javascript - 在打字稿中实现安全导航
- css - 在 div 中水平居中文本
- java - 滚动项目时,Android ListView Adapter 会改变颜色
- plsql - 将小数作为 SQL 函数参数传递时出现数值或估值错误
- selenium - OWASP ZAP - 使用 Selenium Python 启动浏览器后提取 URL
- php - whatsapp api在php密码创建错误中发送消息
- c++ - C++ 中的方括号和对类型
- c++ - 三参数函数模板混淆示例
- bash - 如何使用 sed 用空格代替 LF,而不是 CRLF?