在 OmniAuth 的某些条件下阻止用户访问 /auth/:provider
Prevent user from accessing /auth/:provider under some conditions in OmniAuth
有没有什么方法可以阻止用户访问 /auth/:provider
,如果他们没有登录?我尝试使用 before_request_phase
回调和 Rack::Response
将它们重定向到登录页面,但没有用。
我的应用程序没有使用 omniauth 进行用户身份验证。相反,它用于将第三方帐户连接到用户配置文件。
谢谢!
好的,我找到的解决方案是创建一个新的 OmniAuth 策略,它继承自我想使用的策略并覆盖 request_phase
方法。无法在其初始化程序中仅使用 OmniAuth 配置获得相同的行为。
def request_phase
if env['rack.session']['warden.user.user.key'].present?
super
else
redirect '/'
end
end
OmniAuth.config.before_request_phase = lambda do |env|
user = env['warden'].authenticate!
end
有没有什么方法可以阻止用户访问 /auth/:provider
,如果他们没有登录?我尝试使用 before_request_phase
回调和 Rack::Response
将它们重定向到登录页面,但没有用。
我的应用程序没有使用 omniauth 进行用户身份验证。相反,它用于将第三方帐户连接到用户配置文件。
谢谢!
好的,我找到的解决方案是创建一个新的 OmniAuth 策略,它继承自我想使用的策略并覆盖 request_phase
方法。无法在其初始化程序中仅使用 OmniAuth 配置获得相同的行为。
def request_phase
if env['rack.session']['warden.user.user.key'].present?
super
else
redirect '/'
end
end
OmniAuth.config.before_request_phase = lambda do |env|
user = env['warden'].authenticate!
end