Функция аутентификации Before_filter - PullRequest
2 голосов
/ 19 июня 2011

Я занимаюсь разработкой API с использованием Rails 3. Я сделал свою собственную логику аутентификации и использую before_filter под названием authenticate_user!проверить, зарегистрирован ли пользователь.

В этой функции я проверяю, активен ли текущий сеанс пользователя.Если есть, я ничего не делаю, но если нет активного сеанса, я хочу остановить использование остальных функций / ресурсов, а затем вернуть вызывающему приложению ошибку, что пользователь не вошел в систему.

Мои вопросы:

  1. Как я могу "остановить" запрос в моей функции аутентификации, если нет текущего сеанса.Я не хочу перенаправлять пользователя, только отображать сообщение об ошибке.

  2. Как отобразить сообщение об ошибке, которое будет отправлено обратно вызывающему приложению?Было бы лучше, если бы я мог «ответить» в JSON (и XML, если это возможно).

Это мой текущий код.

def authenticate_user!

        unless current_user

            if params[:token]

                user = User.authenticate_token(params[:token])

                if user

                    session[:user_id] = user.id

                else

                    SEND BACK SOMETHING HERE AND STOP THE PROCESS?

                end

            end

        end

    end

Благодарен за все вводимые данные!

1 Ответ

2 голосов
/ 22 июля 2011

Я также хотел бы знать ответ на этот вопрос.

В моем случае я сделал следующее в приведенном выше предложении else:

  else
      redirect_to :root, :status => 401
      return false
  end

Это вернет 401 несанкционированногоперенаправить в корень и остановить фильтр

...