Как сохранить параметры HTTP_Basic_Authenticate в пользовательской модели
У меня есть базовое приложение, к которому я хочу, чтобы пользователь мог получить доступ, только если у него есть access_token, который я им дал. В этом примере предположим, что токен является "131313"
Пользователи без access_token могут получить доступ только к странице индекса...
В моей модели User у меня есть следующие столбцы
name:
access_token:
items:
В моем контроллере у меня есть:
http_basic_authenticate_with name: "??not sure???", access_token: "131313", except: :index
Я хочу убедиться, что правильный токен доступа передан "131313", а затем проверить имя, предоставленное пользователем, и перечислить все элементы, связанные с этим пользователем.
т.е. перенаправлены на страницу, которая имеет следующее
@user.each do |user|
user.item
Я предполагаю, что мне понадобится контроллер с чем-то вроде:
@user = User.find(params[:name])
Чтобы установить мою переменную экземпляра пользователя для моего просмотра и найти их по указанному имени. У меня возникли проблемы с пониманием, возможно ли это сделать с помощью HTTP_Basic_Authentication. Есть ли способ получить предоставленные значения (например, "имя") и сравнить (например, вызов.find) их с базой данных или даже добавить их в базу данных (например, вызов с сохранением)?
Или мне придется развернуть систему полной аутентификации?
1 ответ
Вы добавляете что-то вроде следующего application_controller.rb
:
before_action :authenticate, except: :index
private
attr_reader :current_user
helper_method :current_user
def authenticate
authenticate_or_request_with_http_basic('MyApplication') do |name, token|
@current_user = User.find_by(name: name)
current_user && current_user.access_token == token
end
end
Тот current_user
Метод всегда возвращает пользователя, вошедшего в систему. Это означает, что вы можете написать что-то вроде следующего в представлении без загрузки @user
снова:
<%= current_user.name %>
<% current_user.items.each do |item| %>
<%= item.name %>
<% end %>