#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
Это воображаемый пример с продуктами, но я думаю, вы поймете идею.
С наилучшими пожеланиями
Тобиас