覆盖omniauth身份的"/ auth/identity"页面

wds*_*pkr 6 rack ruby-on-rails omniauth

我正在使用没有设计的omniauth进行身份验证,因为我喜欢它的简单性.除了omniauth-facebook,我使用omniauth-identity来提供email/pw-authentication.
上omn​​iauth身份railscast介绍如何设置自定义的注册和登录页面.但仍可访问identity(/ auth/identity和/ auth/identity/register)提供的默认路由.

我想让这些在我的控制之下,因为我只想让受邀用户注册.有没有办法覆盖机架中间件提供的那些路由?
试着去

match "/auth/identity", to: "somewhere#else"
Run Code Online (Sandbox Code Playgroud)

不做的伎俩!

是否可能有配置来关闭这些默认路由?文档没有提供任何有关此...的详细信息

不幸的是我对Rack很新,​​所以我还没有足够的洞察力来解决这个问题!
如果有人能指出我正确的方向,我会很高兴的!

小智 6

一个OmniAuth策略对象有一个方法request_phase,其生成HTML形式,它显示给用户.对于"omniauth-identity"策略,这将是您在/auth/identityurl上看到的形式.

您可以覆盖该request_phase方法并将表单生成器替换为例如重定向到您的自定义登录页面(假设您在/loginurl处可用).将以下内容与omniauth初始化代码一起放置:

module OmniAuth
  module Strategies
   class Identity
     def request_phase
       redirect '/login'
     end
   end
 end
end

# Your OmniAuth::Builder configuration goes here...
Run Code Online (Sandbox Code Playgroud)