Нужна помощь с пользовательской аутентификацией - PullRequest
0 голосов
/ 26 июля 2011

Привет, ребята, я создал несколько пользовательских аутентификаций благодаря railscasts.com, но я несколько застрял, поскольку мне нужно ограничить своих пользователей от редактирования профилей других пользователей.

Вот мои методы authenticate_user и current_user:

private

def current_user
  @current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
end

def authenticate_user!
  if current_user.nil?
    redirect_to login_url, :alert => "You must first log in to access this page"
  end
end

Вот фильтр before_filter в моем UsersController :

before_filter :authenticate_user!, :only => [:edit, :update, :destroy]`

РЕДАКТИРОВАТЬ: Исправлено благодаря alock27.

Мне пришлось отредактировать свой users_controller и изменить действие редактирования следующим образом:

@user = User.find(params[:id]    
redirect_to root_url unless current_user == @user    

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Вам не нужно указывать идентификатор для редактирования, обновления и уничтожения: у вас уже есть current_user. Вместо редактирования @user = User.find(id), отредактируйте current_user. Таким образом, ваши функции аутентификации гарантируют, что пользователь будет редактировать только свой собственный профиль.

1 голос
/ 26 июля 2011

Я думаю, вы хотите это:

Добавление безопасности на маршрутах в Rails

вам нужно найти пользователя по: id и проверить, если current_user = @ user

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...