【问题标题】:Multiple users authenticating and authorizing多用户认证和授权
【发布时间】:2017-04-11 14:12:35
【问题描述】:

我现在对授权和身份验证有点困惑。

首先我需要告诉你我的项目。它将有两个主要模型:用户和专业人士。用户是请求服务的人。专业人士是提供服务的人。专业人士可以有非常不同的工作,因此我的项目中存储的数据类型也非常不同。 我计划为专业人士(摄影师、婚礼策划师等)从事的不同类型的工作提供不同的模型。这些模型将具有关系并“拥有”不同的其他模型(使用回形针添加的图像、网站链接...)。

我想我需要同时使用 gems 进行身份验证和授权(我有 DevisePundit

现在是我的问题:

  • 我想让所有用户和专业人士通过同一个表单登录。 我想这是非常设计的事情。尽管在阅读了一些有关设计的信息之后,似乎每个模型都有一个登录名。但是这个线程提到了设计“组”
    https://gorails.com/forum/devise-with-multiple-user-models-with-single-login-form 肯定能解决我单表登录的问题吗?

  • 我想让每个 Pros 子模型向任何类型的用户甚至访客显示其记录的预览。但是,当 Pro 登录时,他们可以访问包含更多信息的扩展配置文件视图(所有可以更改的个人数据、用户的价格请求等......)。你能确认这是 Pundit 的工作吗?

【问题讨论】:

    标签: ruby-on-rails devise pundit


    【解决方案1】:

    Pundit 是实现第二点的完美选择。您可以将某些操作(例如编辑/更新)限制为只能由拥有该帐户的 Pro 执行。 ProPolicy 中这些操作的代码如下所示:

    def edit?
      update?
    end
    
    def update?
      record.pro == user
    end
    

    关于您关于使用 Devise 进行多用户模型身份验证的问题,您能否解释一下为什么您设置为两个用户只使用一个登录表单?您可以在登录按钮上有一个下拉菜单,用户可以在其中选择他是普通用户还是专业人士。或者您甚至可以在表单上有一个复选框/选择,他们可以在其中选择要使用的登录类型。

    如果没有,那么您将不得不检查您的数据库以查看登录是否存在于 Pro 或 User 表中。但是,我想这意味着您不能同时拥有使用同一电子邮件的 Pro 和 User 帐户。

    【讨论】:

    • 你说得对,我什至没有想到专业人士也可以是用户。我认为最好将两者分开并为专业人士制作一个特别的欢迎页面。现在我已经安装并了解了 Devise,我可以深入了解 Pundit! Tks
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2010-11-14
    • 2021-11-08
    • 2013-08-08
    • 2017-09-11
    相关资源
    最近更新 更多