我正在使用Omniauth + Devise身份验证系统,用户可以使用他的电子邮件+密码或Google+帐户进行注册。
现在我需要使用CanCanCan gem来检查登录的用户是否有权进入登录后区域,但我不知道我在哪里可以做到这种情况,在哪个文件中Devise在成功登录后存储重定向功能?
答案 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在哪里重定向您的用户。