Ruby on rails Desive_token_auth-响应头中无访问令牌

Ruby on rails Desive_token_auth-响应头中无访问令牌,ruby-on-rails,rspec,Ruby On Rails,Rspec,我在rails应用程序中使用的是Desive_token_auth,版本为0.1.37。我正在使用rspec测试我的应用程序 登录到应用程序成功,并且在响应头中返回访问令牌。在后续请求中,不会收到新的访问令牌。请求成功,HTTP状态为201。一段时间以来,我一直在为这个问题绞尽脑汁,并通过以下方式在React Native项目中解决了它: 确保我在rails应用程序中(在Rack CORS配置文件中)白名单标题 config.middleware.insert_在'Rack::Runtime'

我在rails应用程序中使用的是Desive_token_auth,版本为0.1.37。我正在使用rspec测试我的应用程序


登录到应用程序成功,并且在响应头中返回访问令牌。在后续请求中,不会收到新的访问令牌。请求成功,HTTP状态为201。

一段时间以来,我一直在为这个问题绞尽脑汁,并通过以下方式在React Native项目中解决了它:

  • 确保我在rails应用程序中(在Rack CORS配置文件中)白名单标题

    config.middleware.insert_在'Rack::Runtime'、'Rack::Cors'do之前
    允许做
    起源“*”
    资源“*”,
    标题::任何,
    expose:['access-token','expiration','token type','uid','client'],
    方法:[:获取、放置、发布、修补、删除、选项]
    结束
    结束

  • 保存(使用AsynStorage)登录后返回的身份验证标头

    if(相应正常){
    if(resp.headers.get('access-token')){
    让accessToken=resp.headers.get('access-token');
    让client=resp.headers.get('client');
    让expiry=resp.headers.get('expiry');
    让tokenType=resp.headers.get('token-type');
    让uid=resp.headers.get('uid');
    让authHeader={'client':client,expiry:expiry,uid:uid,'access token':accessToken,'token type':tokenType};
    AsyncStorage.setItem('auth_header',JSON.stringify(authHeader));
    }
    返回json;
    }

  • 为每个后续请求使用保存的标题

    导出函数fetchTheThing(){
    返回(调度,获取状态)=>{
    返回AsyncStorage.getItem('auth_header',(err,result)=>{
    返回Api.get(
    /the_thing
    ,null,result)。然后(resp=>{
    分派(setFetchedThing({thing:resp}));
    }).catch((ex)=>{
    控制台日志(ex);
    });
    });
    };
    }

我还遇到了每次请求重置令牌的默认设置问题,因此我在designe_token_auth.rb中将其设置为false


(很抱歉设置了这些代码块的格式)

这是登录后发送的示例请求标头<代码>{“接受”=>“应用程序/json”,“内容类型”=>“应用程序/json”,“访问令牌”=>“SYotATXiRVWJbkX_LR2TLw”,“令牌类型”=>“承载者”,“客户端”=>“188DMQOWOLSAZFFBD1VJG”,“到期”=>“1456358941”,“uid”=>“vida@kihn.net“}可能是因为令牌未更新时的批处理请求?