Разработать перенаправление после сбоя входа в систему с помощью флеш-сообщения - PullRequest
4 голосов
/ 04 января 2012

Я успешно реализовал пользовательское перенаправление после неудачной схемы входа в систему в этих ссылках ...

Разработать перенаправление после неудачного входа в систему https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-when-the-user-can-not-be-authenticated

Однако яне получать соответствующие флеш-сообщения на моей статической странице.Я попытался добавить флэш-сообщение в custom_failure.rb, как это ...

def redirect_url
  login_path
  flash[:notice] = "Invalid login or password"
end

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

... также я показываю мои страницы входа и регистрации на статических страницах в моем приложении.Так что для экземпляра в app / views / static_pages / login.html.erb у меня есть ...

<%= form_for("user", :url => user_session_path) do |f| %>
<table>
<tr>
<td><%= f.label :email %></td>
<td><%= f.text_field :email %></td>
</tr>
<td><%= f.label :password %></td>
<td><%= f.password_field :password %></td>
</table>
<%= f.check_box :remember_me %>
<%= f.label :remember_me %><p/>
<%= f.submit 'Sign in' %><p/>
<%= link_to "Forgot your password?", new_password_path('user') %>
<% end %>

test

Ответы [ 2 ]

3 голосов
/ 06 января 2012

В итоге я добавил эти строки в файл макета, и он работает. Спасибо за помощь Марио.

<%= content_tag(:div, flash[:error], :id => "flash_error") if flash[:error] %>
<%= content_tag(:div, flash[:notice], :id => "flash_notice") if flash[:notice] %>
<%= content_tag(:div, flash[:alert], :id => "flash_alert") if flash[:alert] %>
2 голосов
/ 04 января 2012

Внутри вашего пользовательского приложения для сбоя вы можете установить флэш-сообщение в методе respond следующим образом:

class CustomFailure < Devise::FailureApp
  def redirect_url
    login_path
  end

  # You need to override respond to eliminate recall
  def respond
    if http_auth?
      http_auth
    else
      flash[:notice] = I18n.t(:unauthenticated, :scope => [ :devise, :failure ])
      redirect
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...