如何在注册期间分配不同的用户角色?

时间:2014-02-09 06:33:31

标签: ruby-on-rails ruby authentication activerecord

我想知道如何创建不同的用户角色,具体取决于网站用户注册的哪个部分?例如,我有三种用户类型。一个是管理员,另一个是普通用户,第三个是管理员。

我有下表:

create_table "users", force: true do |t|
    t.string   "username"
    t.string   "email"
    t.string   "role"
    t.string   "password"
end

在“角色”栏中,我会保存以下字符串之一:“admin”,“regular”或“moderator”。

我已经在Michael Hartl's Ruby on Rails Tutorial的帮助下创建了我的身份验证系统。另外,我观看了railscasts剧集#189 Embedded Association,其中有一个处理多个用户角色的非常好的方法。

问题是视频用户角色是在注册期间选择的,我不希望用户看到用户角色。我有两个网站部分。如果用户通过一个部分注册,他将具有“常规”角色,如果他通过另一部分注册,他将具有角色“主持人”。角色“管理员”当然会有不同的设置。

如果我传递参数“role”:“主持人”或“角色”:“常规”但我认为这不是安全选项,因为它对用户是可见的并且他们可以很容易地通过其他一些参数。例如,想要损害网站的常规用户可以通过“角色”:“主持人”。

感谢您的建议:)

1 个答案:

答案 0 :(得分:1)

我会选择CanCan和Rolify,这里有很好的记录: https://github.com/EppO/rolify/wiki/Tutorial。 关于它也有一些很棒的Railscast。

通过这种方式,您可以以相同的方式添加所有用户,并根据用户选择注册的页面添加角色(为什么这样安全?)。我假设您只有一些内部网站可供您添加管理员和编辑者?

现在您可以使用request.original_url并添加一个switch语句来执行以下操作:         current_user.add_role“admin”

当然您也可以使用您的方法,只需更新用户记录: current_user(或您要在用户控制器中创建的用户)并执行操作         user.role =“admin”         user.save

希望它有所帮助!