使用 omniauth 和自定义用户模型的路由错误
routing error using omniauth and custom user model
我有一个自定义 User
模型并通过 omniauth-facebook
和 omniauth-vkontakte
进行身份验证。给Post
模型留言,给Book
模型评论需要鉴权。所以我定义了一个 sessions_controller.rb
:
def create
user = User.from_omniauth(request.env['omniauth.auth'])
cookies[:user_id] = user.id
redirect_to root_path
end
并且在 Book
和 Post
模型的 show.html.erb
中,我有以下内容:
<div>
<p>Only signed in users can leave comments/reviews.
Please sign in via <%= link_to 'Facebook', 'auth/facebook' %> or
<%= link_to 'VK', 'auth/vkontakte' %> </p>
</div>
在 routes.rb
我有这个:
get 'auth/:provider/callback', to: 'sessions#create'
控制台returns出现如下错误:ActionController::RoutingError (No route matches [GET] "/books/auth/facebook")
这个错误是最愚蠢的:我应该写 <%= link_to ... '/auth/:strategy'
,所以我错过了第一个斜杠!
我有一个自定义 User
模型并通过 omniauth-facebook
和 omniauth-vkontakte
进行身份验证。给Post
模型留言,给Book
模型评论需要鉴权。所以我定义了一个 sessions_controller.rb
:
def create
user = User.from_omniauth(request.env['omniauth.auth'])
cookies[:user_id] = user.id
redirect_to root_path
end
并且在 Book
和 Post
模型的 show.html.erb
中,我有以下内容:
<div>
<p>Only signed in users can leave comments/reviews.
Please sign in via <%= link_to 'Facebook', 'auth/facebook' %> or
<%= link_to 'VK', 'auth/vkontakte' %> </p>
</div>
在 routes.rb
我有这个:
get 'auth/:provider/callback', to: 'sessions#create'
控制台returns出现如下错误:ActionController::RoutingError (No route matches [GET] "/books/auth/facebook")
这个错误是最愚蠢的:我应该写 <%= link_to ... '/auth/:strategy'
,所以我错过了第一个斜杠!