按用户角色设计注册编辑?

Posted

技术标签:

【中文标题】按用户角色设计注册编辑?【英文标题】:Devise Registration edit by user role? 【发布时间】:2016-04-28 20:39:27 【问题描述】:

我一直无法完全掌握如何按用户角色分隔我的应用程序。

我的目标是让用户通过一次注册进行注册,并根植到特定的根目录以及具有不同设计帐户信息的特定布局。

任何用户,无论角色如何,都可以通过用户名电子邮件、密码进行注册。但如果角色需要,注册后将需要输入额外的帐户信息。

示例普通用户只需要用户名密码电子邮件。

Vip 需要姓名地址用户名密码电子邮件。

到目前为止,我已经在我的设计用户模型中设置了我的角色

ROLES w% [ regular vip1 vip]

我已经设置了一个单独的控制器来按角色将当前用户重定向到特定路径。

def index
    path = case current_user.role
      when 'regular
      edit_user_registration_path
else.... etc etc

我还重写了设计注册控制器以在注册时包含角色。

我的问题仍然是找到一种按用户角色分配布局的方法,并且还需要按角色提供其他帐户信息。即使我找到了一种按角色重定向用户的方法。在注册到特定页面并按角色 root 用户后,找到一种重定向用户的方法会容易得多。

我还查看了 CanCanCan 文档并了解限制每个用户角色的不同功能的概念,例如一个用户可以创建帖子而另一个用户没有。这对于我计划构建的应用程序确实很有价值,但是有什么可以解释如何为每个用户创建和呈现不同的布局。

此外,我也愿意采用一种不同的策略,这种策略可能有助于按角色区分用户,但仍然具有通用登录和注册的便利性。最后但并非最不重要的一点是,我还计划在 twitter 和 facebook 等网站上添加一键登录,在处理用户角色时,您会期待未来会出现问题吗?

任何想法或建议都会有所帮助。再一次,我彻底阅读了康康康康康舞,并想出我要么完全遗漏了某些东西,要么完全糊涂了。

如有任何帮助,我将不胜感激。

【问题讨论】:

欢迎来到 Stack Overflow!我编辑了您的问题以使用降价项目符号正确格式化它。我还将您的代码示例缩进了 4 个空格,以便正确呈现 - 请参阅编辑帮助以获取有关格式的更多信息。最后,我修正了一些小的语法和拼写。请编辑以添加任何矿石详细信息,以防有必要识别特定问题。祝你好运! 【参考方案1】:

有几种不同的方法可以处理这个问题。 在控制器内部,您可以指定要渲染的视图/布局。 例如:

if current_user.role == "vip"
  render layout: "vip"
elsif current_user.role == "regular"
  render layout: "regular"
end

但是,您可以拥有一个仅显示取决于用户角色的某些字段的视图,而不是制作一堆不同的布局和视图。

看起来像这样(在 HAML 中):

-if current_user.role == "vip"
  =f.input :address
  =f.input :name
=f.input :email
=f.input :password

至于通过 3rd 方 OAuth 进行的一键式注册,我认为这不会是一个大问题。当您的应用在某人通过 Facebook 或 Twitter 登录后收到回调时,接收该回调的控制器可以处理分配不同的角色。

【讨论】:

这很有意义,谢谢,在相同的视图中显示信息更有意义,任何关于按角色扎根用户的想法,并且在每个用户角色注册后都有特殊条件。我已经阅读了设计文档并向上和向下搜索堆栈溢出但没有成功。让我更接近但没有解决我的问题的唯一成功是创建一个新控制器,该控制器按角色重定向用户。 在我的页面控制器中,我定义了 index def index path = case current_user.role when 'regular' edit_user_registration_path end 到目前为止效果很好,似乎可以通过用户 root 建立一个 root,我的问题是找到一种方便的方法来在注册后按角色重定向用户,之后的任何时间他们注册后将被重定向到该特定角色的标准根目录

以上是关于按用户角色设计注册编辑?的主要内容,如果未能解决你的问题,请参考以下文章

Rails:允许用户在注册时选择他们的角色设计

如何为多用户 Java 应用程序设计/保留用户角色(当前和已注册)?

当角色名称需要与role_id匹配时(使用devise)添加要选择的角色来设计注册表单

c#实现按用户角色分配菜单的使用权限(WinForm)

Rails,使用隐藏字段设置用户角色

java web开发多用户博客系统,用户权限控制该怎么实现?