Я полагаю, что часть испортилась:
match '/users/auth/facebook' => 'users/omniauth_callbacks#passthru'
Небольшое испытание для вас:
поставьте на ваш взгляд:
<%= link_to users_auth_facebook_path, users_auth_facebook_path %>
и следуйте ему с щелкнуть, это также дает ту же ошибку ...
Я считаю, что вы должны использовать что-то вроде (что упомянуто в вики, на который вы ссылались выше):
devise_scope :user do
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
И обернуть метод passthru, чтобы делегировать действие соответствующему приватному / защищенному методу в зависимости от params [: provider] значение
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def passthru
send(params[:provider]) if providers.include?(params[:provider])
end
protected
def facebook
raise "Implement me for facebook"
end
def twitter
raise "Implement me for twitter"
end
private
def providers
["facebook", "twitter"]
end
end
На случай, если кто-то столкнется с такой же проблемой.
Вот что решило мою проблему:
FacesContext.getCurrentInstance().getExternalContext().redirect("article.jsp?article_id=" + articleId);
По сути, что-то уже отправляет вывод клиенту до того, как вы вызовете response.sendRedirect (). Как только что-то было отправлено в браузер, вы не можете перенаправить или переслать его в другое место.
Как правило, любые сценарии, которые могут привести к перенаправлению или переадресации, должны обрабатываться как можно раньше в контексте запроса, чтобы гарантировать, что перенаправление произойдет до того, как вы отправите какие-либо данные клиенту. Вы делаете что-то вроде вызова этого кода через тег в представлении?
Почему вы используете отправку в одном разместить и перенаправить в другой? Это не источник проблемы - однако, отсутствие возврата после отправки ответа. Кроме того, если вы не возражаете, у меня есть несколько дружеских предложений:
ArrayList
).
с src, указывающим на страницу кражи файлов cookie, что приведет к захвату сеанса.