Я использую самородку Autodesk Autodesk (https://github.com/lynndylanhurley/devise_token_auth) с несколькими пользователями и получаю странную ошибку при попытке аутентификации. Я создаю devise_token_auth_group
, который позволяет мне аутентифицировать несколько типов пользователей. Однако ни одно из нижеприведенных условий или elsif
не выполнено, хотя, как представляется, before_action :authenticate_user!
передает действие индекса (поскольку оно не отображает или не перенаправляет и не позволяет запустить действие индекса). Любые идеи, если я делаю это неправильно или что-то не хватает?Несколько типов пользователей - групповая аутентификация - анонимный токен Auth
Я вхожу в качестве покупателя и должен получать все адреса, когда я отправляю запрос на это действие. Сначала я получаю все места. Однако после многократного обращения к серверу каждые 5 секунд @locations
заканчивается пустым, потому что не выполняются никакие условия if
или elsif
... Это заставляет меня думать, что перед действием не работает должным образом. В качестве теста я попытался просто нанести удар по этому маршруту, используя PostMan Rest Client без токена доступа, и каким-то образом он вернул пустой массив, поэтому я считаю, что именно там проблема.
devise_token_auth_group :user, contains: [:shopper, :merchant]
before_action :authenticate_user!, except: [:update]
before_action :authenticate_merchant!, only: [:update]
def index
if merchant_signed_in?
@locations = Location.where(merchant_company_id: params[:merchant_company_id])
elsif shopper_signed_in?
@locations = Location.all
end
# the @locations variable sometimes has all locations (as expected)
# but after a bunch of sequential requests, it is empty so the action renders "null"
render json: @locations, status: 200
end
Можете ли вы сказать мне, если 'user_signed_in?' Функция возвращает истину? И если вы можете получить доступ к помощнику 'current_user'? –
К сожалению, 'current_user' -' nil', а 'user_signed_in?' Возвращает false, но я очень надеюсь, увидев ваше предложение ниже. Возможно ли, что эти методы в ссылке, которую вы включили, не проходят должным образом? Кроме того, похоже, что это может быть связано с дросселем запроса партии? –
Я считаю, что это действительно связано с пакетным запросом, и это проблема в GitHub, которая связана: https://github.com/lynndylanhurley/devise_token_auth/issues/188 Кроме того, если вы получаете доступ к этому маршруту и не предоставляйте токен доступа, вы должны получить 401 Unauthorized, потому что 'before_action: authenticate_user!' должен отображать или перенаправлять. Вместо этого, как описано в OP, он возвращает пустой массив ('@ locations') –