2

認証にはレール3.2のデバイスを使用します。デフォルトルートをdeviseから次のように変更しました。

devise_scope :user do
    get 'signin' => 'devise/sessions#new', :as => :new_user_session
    post 'signin' => 'devise/sessions#create', :as => :user_session
    match 'signout' => 'devise/sessions#destroy', :as => :destroy_user_session,
          :via => Devise.mappings[:user].sign_out_via
  end

これで、サインインとサインアップのフォームがルートサイトにあります。127.0.0.1:3000/signinへのアクセスを回避し、127.0.0.1:3000へのアクセスのみを許可するには、削除すると、Authentication#welcomeのoMethodErrorのようなエラーメッセージが表示されます。/ Volumes / Development / login_app/appが表示されます。 /views/authentication/welcome.html.erbここで、行#6が発生しました:

undefined method `user_session_path' for #<ActionDispatch::Routing::RoutesProxy:0x007ffb4d711a10>
Extracted source (around line #6):

ルートサイトにsign_inとsign_upがあります。次のようになります。

<h1>Hello</h1>


<h2>Sign in</h2>

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
    <div><%= f.label :email %><br />
      <%= f.email_field :email %></div>

    <div><%= f.label :password %><br />
      <%= f.password_field :password %></div>

    <% if devise_mapping.rememberable? -%>
        <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
    <% end -%>

    <div><%= f.submit "Sign in" %></div>
<% end %>

<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
    <%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
<% end -%>


<h2>Sign up</h2>

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
    <%= devise_error_messages! %>

    <div><%= f.label :email %><br />
      <%= f.email_field :email %></div>

    <div><%= f.label :password %><br />
      <%= f.password_field :password %></div>

    <div><%= f.label :password_confirmation %><br />
      <%= f.password_field :password_confirmation %></div>

    <div><%= f.submit "Sign up" %></div>
<% end %>

これで誰かが来てURLに127.0.0.1/signinを入れることができ、それからsign_inフォームが表示されます。これは避けます。ルートサイトに表示されるはずだからです...sing_upのような同じシナリオ...ありがとう

4

0 に答える 0