У меня возникла проблема с выходом из системы devise_token_auth.
Я работаю на основе этих SO:
Как установить заголовок и параметры в axios?
Почему я не могу подписать использовать devise_token_auth и curl?
Это метод аутентификации и уничтожения токена разработки. Он достигает этого метода и останавливается в точке останова.
def destroy
# remove auth instance variables so that after_action does not run
user = remove_instance_variable(:@resource) if @resource
client = @token.client
@token.clear!
if user && client && user.tokens[client]
user.tokens.delete(client)
user.save!
yield user if block_given?
render_destroy_success
else
render_destroy_error
end
end
@token
установлен в другом методе и, похоже, не вызывается. Я не совсем понимаю, как этот метод должен очищать токены.
Мой @token
равен #<struct DeviseTokenAuth::TokenFactory::Token client=nil, token=nil, token_hash=nil, expiry=nil>
, а @resource
равен нулю в моей точке останова/верхней части метода.
Запрос клиента (Vue):
methods: {
headers() {
const config = {
headers: {
"uid": localStorage.getItem("uid"),
"client": localStorage.getItem("client"),
"access-token": localStorage.getItem("access-token")
}
}
return config
},
async handleLogOut() {
// e.preventDefault();
const headers = this.headers()
localStorage.removeItem('access-token')
localStorage.removeItem('uid')
localStorage.removeItem('client')
this.logOut();
let response = await axios.get('api/v1/auth/sign_out', null, headers)
}
}
Маршруты:
destroy_api_user_session GET /api/v1/auth/sign_out(.:format) api/v1/sessions#destroy
Что я делаю не так? Как работает метод уничтожения?
axios.get()
, и я считаю, что вместо этого вам следует использоватьaxios.delete()
, потому что для выхода из разработки используется метод запросаdelete
. - person Khrisna Gunanasurya   schedule 18.02.2021ActionController::RoutingError (No route matches [DELETE] "/api/v1/auth/sign_out"):
, я добавлю маршруты, которые у меня есть. Маршруты могут отличаться для devise и devise_token_auth. - person user3738936   schedule 18.02.2021routes.rb
? потому что я никогда не используюdevise_token_auth
, но я думаю, чтоdestroy
должен быть методом запросаdelete
. как в здесь вы можете проверить, что он использует методdelete
- person Khrisna Gunanasurya   schedule 19.02.2021