0

我使用 Omniauth + Devise 身份验证系统,用户可以使用他的电子邮件 + 密码或他的 Google+ 帐户进行注册。

现在我需要使用 CanCanCan gem 来检查正在登录的用户是否有权进入登录后区域,但我不知道我可以在哪里执行该条件,Devise 在哪个文件中存储成功登录后的重定向功能?

4

2 回答 2

0

您必须覆盖设计注册控制器。

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    '/home' # your path to redirect after signup
  end
end

您可以在abilities.rb 文件中定义访问权限。

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= user.new

    # Here you can define the permissions for home page for user
  end
end
于 2015-05-21T11:28:12.223 回答
0

您可以在应用程序控制器中实现 after_sign_in_path 方法,其中资源是您的用户:

class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    if resource.can? :show, ProtectedResource
      protected_area_path
    else
      denied_access_path
    end
  end
end

这将告诉设计将您的用户重定向到哪里。

于 2015-05-21T11:39:29.167 回答