CanCanCan宝石与Devise + Omniauth Ruby on Rails

时间:2015-05-21 11:14:25

标签: ruby-on-rails ruby devise cancancan

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

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

2 个答案:

答案 0 :(得分:0)

您必须覆盖Devise注册控制器。

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

答案 1 :(得分:0)

您可以在Application Controller中实现after_sign_in_path方法,其中resource是您的用户:

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

这将告诉Devise在哪里重定向您的用户。