单独验证用户和管理员

时间:2014-04-23 10:16:52

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.1

基本上我的应用程序中有管理员和用户。在用户签名后,它也会路由user_dashboard,但如果我在url中更改为admin_dashboard,那么它也会被路由。我怎么能阻止

同样,如果管理员登录,它也会路由到Admin_dashboard,但如果我在url中更改为user_dashboard,则会进行路由。我该如何限制

class ApplicationController < ActionController::Base

  protect_from_forgery

  skip_before_filter :authenticate_user! , :only => ["welcome#index"]

  def after_sign_in_path_for(user)  
     user_dashboard_index_path
   end

   def after_sign_out_path_for(user)
    welcome_index_path
  end
end

2 个答案:

答案 0 :(得分:0)

如果您有任何字段,例如&#34; is_admin&#34;在用户模型中,您只需要检查登录用户是否为admin。

def after_sign_in_path_for(user)
  if user.is_admin?
    admin_dashboard_index_path
  else
    user_dashboard_index_path
  end
end

答案 1 :(得分:0)

我相信这样做的方法是override the devise before and after_sign_in_path_for helpers

我认为(from what I've read),您可以使用逻辑来确定处理此问题的最佳方法:

def after_sign_in_path_for(resource)
  stored_location_for(resource) ||
    if resource.is_a?(Admin)
      admin_dashboard_path
    else
      user_path(resource)
    end
end