Авторизация пользователя has_secure_password

#ruby-on-rails #ruby-on-rails-3 #security #user-accounts #authentication

#ruby-on-rails #ruby-on-rails-3 #Безопасность #учетные записи пользователей #аутентификация

Вопрос:

Я следил за руководством Railcast # 270 по has_secure_password, и все это работает.

Например, в моем заголовке есть следующее:

 <% if current_user %>
  <li><%= link_to "Profile", current_user %></li>
  <li class="last"><%= link_to "Logout", logout_path %></li>
<% else %>
 <li><%= link_to "Login", login_path %></li>
 <li class="last"><%= link_to "Register", signup_path  %></li>
<% end %>
 

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

Ответ №1:

Вы можете добавить фильтр before в контроллер, который будет делать именно то, что вам нужно. Нравится:

 class ProductController < ActionController::Base
  before_filter :login_required, :only => [:new, :create, :edit, :update]

  # ...

  private

  def login_required
    unless current_user
      flash[:alert] = 'Log in!'
      redirect_to login_url, :status => 401
    end
  end
end
 

Это воображаемый пример с продуктами, но я думаю, вы поймете идею.

С наилучшими пожеланиями

Тобиас