我想知道如何创建不同的用户角色,具体取决于网站用户注册的哪个部分?例如,我有三种用户类型。一个是管理员,另一个是普通用户,第三个是管理员。
我有下表:
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”:“主持人”或“角色”:“常规”但我认为这不是安全选项,因为它对用户是可见的并且他们可以很容易地通过其他一些参数。例如,想要损害网站的常规用户可以通过“角色”:“主持人”。
感谢您的建议:)
答案 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
希望它有所帮助!