Я использую authlogic, и он работает очень хорошо. Одна вещь, которую я заметил, это то, что, как хакер, я мог легко набрать этот адрес:
3000 :: локальный / пользователей / a_user_that_is_not_me / редактировать
Поскольку форма в форме редактирования предназначена для @user, для которого задано значение current_user, и для него требуется токен подлинности, даже если я попытался указать подробности для другого пользователя, я в итоге меняю свою учетную запись вместо других пользователей.
Это хорошо, но мне бы хотелось, чтобы эти хакеры перенаправлялись еще до того, как увидели форму.
Я попробовал это в users_controller:
def edit
if admin?
@user = params[:user]
elsif User.find_by_username(params[:id]) != current_user
@user = current_user
@not_user = User.find_by_username(params[:id])
redirect_to user_path(@not_user)
else
@user = current_user
end
end
Перенаправление работает, если я ввожу адрес с именем другого пользователя, но получаю ошибку 404 при попытке доступа к странице редактирования для текущего пользователя.
Есть идеи, почему это не работает?