我使用 Omniauth + Devise 身份验证系统,用户可以使用他的电子邮件 + 密码或他的 Google+ 帐户进行注册。
现在我需要使用 CanCanCan gem 来检查正在登录的用户是否有权进入登录后区域,但我不知道我可以在哪里执行该条件,Devise 在哪个文件中存储成功登录后的重定向功能?
我使用 Omniauth + Devise 身份验证系统,用户可以使用他的电子邮件 + 密码或他的 Google+ 帐户进行注册。
现在我需要使用 CanCanCan gem 来检查正在登录的用户是否有权进入登录后区域,但我不知道我可以在哪里执行该条件,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
您可以在应用程序控制器中实现 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
这将告诉设计将您的用户重定向到哪里。