我是Ruby on Rails的新手,我试图编写一个具有四种不同用户访问级别(代表,顾问,主席,管理员)的网站。对于每一个,我想在登录时创建一组不同的视图,以便它们具有不同的功能。验证用户登录并重定向到每个访问级别的控制器的最佳方式是什么?Rails多个访问级别
0
A
回答
1
也许你想要一个叫做漫游认证的东西。 最简单的一个,就是向用户模型添加字符串字段“角色”。
关于登录时的重定向,取决于您使用的认证系统。
class ApplicationController < ActionController::Base
def after_sign_in_path
"/#{current_user.role}"
end
end
一个最简单的方法是使用Devise及其after sign in callback
而且,也许考虑的不是创造不同的控制器,但使用不同的layouts,如:
class ApplicationController < ActionController::Base
layout :choose_layout
private
def choose_layout
current_user.role.presence || 'application'
end
end
另一种方式,就是用routing constraints
但是,这当然取决于你的应用逻辑。
这似乎是最好的,为每个角色创建不同的namespaces如果你想完全不同的观点:
Rails.application.routes.draw do
namespace :admin do
end
namespace :advisor do
end
...
end
然后你只需创建下全视角,相应的目录:管理员,代表,顾问,主席
0
我推荐使用CanCanCan gem https://github.com/CanCanCommunity/cancancan。您可以轻松地设置每个角色的权限,并且工作量相对较低。
相关问题
- 1. C++访问级别
- 2. 如何在Rails的模型中拥有两个“访问级别”?
- 3. C++类访问级别
- 4. Knockout.js映射插件,访问json嵌套多个级别
- 5. XSD多个级别的扩展问题
- 6. Rails数据库级别的多继承
- 7. 基于访问级别的Codeigniter菜单
- 8. 如何利用DNN访问级别
- 9. 不同级别的访问的方法
- 10. AWS Cognito的不同访问级别
- 11. 限制模型级别的Django访问
- 12. 控制不同的访问级别
- 13. Java程序包级别访问
- 14. SailsJS用户访问级别和角色
- 15. 命名空间级别的访问
- 16. Codeigniter用户名和访问级别echo
- 17. 的Joomla外部HTML和访问级别
- 18. MVC - 角色内的访问级别
- 19. 的Java:内部类的访问级别
- 20. 策略,根据用户访问级别
- 21. Joomla1.5页面的公共访问级别
- 22. 访问NSPopover窗口设置级别?
- 23. Pear Auth验证()和访问级别
- 24. 与Java重写访问级别
- 25. Java类成员的访问级别
- 26. 与PAM的访问级别不同
- 27. 设置VisualSVN中的访问级别
- 28. PHP上的用户访问级别
- 29. 访问Java LinkedList的更低级别?
- 30. SQL Server 2008中访问级别