我在我的rails应用程序中使用devise_token_auth,Ver 0.1.37。我正在使用rspec来测试我的应用程序。
登录到应用程序成功,并在响应标头中返回访问令牌。在后续请求中,不会收到新的访问令牌。请求成功,HTTP状态为201。
答案 0 :(得分:1)
我有一段时间用这个问题撞墙,并在我的React Native项目中通过以下方式解决了这个问题:
确保我将rails应用程序中的标题列入白名单(在Rack CORS配置文件中)
config.middleware.insert_before 'Rack::Runtime', 'Rack::Cors' do
allow do
origins '*'
resource '*',
headers: :any,
expose: ['access-token', 'expiry', 'token-type', 'uid', 'client'],
methods: [:get, :put, :post, :patch, :delete, :options]
end
end
保存(使用AsynStorage)登录后我回来的auth标头
if (resp.ok) {
if (resp.headers.get('access-token')) {
let accessToken = resp.headers.get('access-token');
let client = resp.headers.get('client');
let expiry = resp.headers.get('expiry');
let tokenType = resp.headers.get('token-type');
let uid = resp.headers.get('uid');
let authHeader = {'client': client, expiry: expiry, uid: uid, 'access-token': accessToken, 'token-type': tokenType};
AsyncStorage.setItem('auth_header', JSON.stringify(authHeader));
}
return json;
}
为每个后续请求使用已保存的标头
export function fetchTheThing() {
return (dispatch, getState) => {
return AsyncStorage.getItem('auth_header', (err, result) => {
return Api.get(
/ {the_thing {1}}
我也遇到了每个请求重置令牌的默认设置的问题,因此我在devise_token_auth.rb中将其设置为false。
(对不起这些代码块的格式化)