1

У меня есть базовое приложение, которое я хочу, чтобы у пользователя был доступ, только если у него есть access_token, который я им дал. В этом примере позволяет сказать, что лексема «131313»Как сохранить параметры HTTP_Basic_Authenticate для модели пользователя

Пользователи без access_token могут получить доступ только индексную страницу ...

В моей модели пользователя у меня есть следующие столбцы

name: 
access_token: 
items: 

В моей контроллер у меня есть:

http_basic_authenticate_with name: "??not sure???", access_token: "131313", except: :index 

Я хочу подтверждение того, что право маркер доступа передается «131313», а затем, чтобы проверить имя, предоставленный пользователем, и перечислить все ОИТ ms, связанных с этим пользователем.

т.е. получить перенаправлен на страницу, которая имеет следующую

@user.each do |user| 
    user.item 

Я предполагаю, что я нужен контроллер с чем-то вроде:

@user = User.find(params[:name]) 

Чтобы установить свой переменный экземпляр пользователь для моего зрения и найти их по названию. У меня возникают проблемы с пониманием того, возможно ли это сделать с помощью HTTP_Basic_Authentication. Есть ли способ получить предоставленные значения (i.e 'name') и сравнить (например, вызов) их с базой данных или даже добавить их в базу данных (т. Е. Вызов save)?

Или мне нужно развернуть полную систему аутентификации?

+0

Вы указали тег 'devise', но вы не указали его в своем вопросе. Создана ли ваша модель 'User' с помощью' devise' gem? –

+0

Где находится тег разработчика? Нет, не придумано. – coderwannabe2

ответ

0

Вы добавить что-то вроде следующего к вашему 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 %> 
Смежные вопросы