reactjs - 反应不将授权标头传递给rails api
问题描述
我正在将 React 前端与 graphql rails api 后端一起用于带有公寓的 SaaS 项目。我需要从 request.env 获取授权令牌,以便我可以解码 user_id 以获取租户名称,这是用户模型中的一个字段。这是基于用户登录的通用电梯。当我检查 Rails 记录器日志时,我看到“HTTP_AUTHORIZATION”=>“”它是空的。我做错了什么。
这是来自添加授权的 index.js :
const authLink = setContext((_, { headers }) => {
const token = localStorage.getItem(AUTH_TOKEN)
return {
headers: {
...headers,
authorization: token ? `Bearer ${token}` : ''
}
}
})
const client = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache()
})
ReactDOM.render(
<BrowserRouter>
<ApolloProvider client={client}>
<App />
</ApolloProvider>
</BrowserRouter>,
document.getElementById('root')
);
这就是我尝试在 Rails 中提取它的地方:
Rails.application.config.middleware.use Apartment::Elevators::Generic, lambda { |request|
tenant_name = nil
if request.env["HTTP_AUTHORIZATION"]
token = request.env["HTTP_AUTHORIZATION"]
payload = JWT.decode token, Rails.application.secrets.secret_key_base, 'HS256'
user_id = payload.first["user_id"]
tenant_name = User.find(user_id).subdomain
end
tenant_name
}
解决方案
推荐阅读
- c - 访问数组中的每个第 n 个元素(汉明码)
- java - 如何使用带有firebase android studio的电话号码创建登录名和注册?
- php - 如何使用更新功能更新我的事件表?
- dropbox - 您可以在生产环境中使用 Dropbox API 读取/写入 json 吗?
- java - 使用 ramdisk 使用 IntelliJ 2019.2 构建 Maven 驱动的 Vaadin 14 应用程序?(“前端编译失败”)
- c# - 无法创建“Microsoft.AspNetCore.Http.HttpContext”类型的实例
- mysql - 我可以限制 MySQL 用户“查看”特定表吗
- mysql - mysql:更新增量序列号与前一行相同的数字
- sql - 在 SQL Server 中将 double 类型转换为 DateTime
- php - phpunit 功能测试错误调用未定义的方法