перенаправление от jsf?

Я полагаю, что часть испортилась:

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
10
задан Buhake Sindi 22 March 2011 в 23:40
поделиться

3 ответа

На случай, если кто-то столкнется с такой же проблемой.

Вот что решило мою проблему:

FacesContext.getCurrentInstance().getExternalContext().redirect("article.jsp?article_id=" + articleId);
23
ответ дан 3 December 2019 в 15:52
поделиться

По сути, что-то уже отправляет вывод клиенту до того, как вы вызовете response.sendRedirect (). Как только что-то было отправлено в браузер, вы не можете перенаправить или переслать его в другое место.

Как правило, любые сценарии, которые могут привести к перенаправлению или переадресации, должны обрабатываться как можно раньше в контексте запроса, чтобы гарантировать, что перенаправление произойдет до того, как вы отправите какие-либо данные клиенту. Вы делаете что-то вроде вызова этого кода через тег в представлении?

1
ответ дан 3 December 2019 в 15:52
поделиться

Почему вы используете отправку в одном разместить и перенаправить в другой? Это не источник проблемы - однако, отсутствие возврата после отправки ответа. Кроме того, если вы не возражаете, у меня есть несколько дружеских предложений:

  • Вы можете использовать DateFormat, чтобы вернуть дату комментария, как хотите (это будет намного чище).
  • Если список ошибок содержит только строки, используйте универсальные шаблоны ( ArrayList ).
  • Что вы делаете с ошибками?
  • Ваша обработка commentName очень опасна. Вы должны использовать белый список вместо черного списка - определите, что вы хотите принять в комментарии, и заблокируйте все остальное. Прямо сейчас кто-то может вставить тег с src, указывающим на страницу кражи файлов cookie, что приведет к захвату сеанса.
  • После изменения отправки на перенаправление добавьте под ним возврат (вы должен всегда это делать. Если этого не сделать, может получиться то, что вы видите прямо сейчас, а именно, что вы уже отправили ответ куда-то еще, но, поскольку вы не вернулись, вы достигли места, где пытаетесь для отправки другого).
2
ответ дан 3 December 2019 в 15:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: