6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OmniAuthにnamed routesを設定する

Last updated at Posted at 2012-12-26

RailsでOmniAuthを導入すると自動的にGET /auth/:providerがマウントされるけども、これにはルーティング名が設定されていないのでredirect_to hoge_urlみたいなことができない。

Creating authentication named routesによると、次のようにconfig/routes.rbにすれば名前を設定できる。

match '/auth/:provider', to: lambda{|env| [404, {}, ["Not Found"]]}, as: 'auth'

こうすることでauth_url(provider: "twitter")というような使い方ができるようになる。

ちなみにOmniAuthとRails間のリクエストの流れは、Railsのルーティングにマッチしなければ(404ならば)OmniAuthにお任せするというものになっている。これはRackミドルウェア間の流れそのもの(だと思う)。

それを利用して、上記コードでは意図的に404を返すルーティングを作り、そこに名前を設定している。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?