关于Apollo Authentication

关于Apollo Authentication

应用程序的一些操作权限认证,需要一种方法来告诉服务器哪个用户与每个请求相关联。Authentication就是是Apollo客户端用于验证用户身份的!

header

向每个HTTP请求添加一个授权头识别自己。

import { ApolloClient } from 'apollo-client';
import { createHttpLink } from 'apollo-link-http';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';

const httpLink = createHttpLink({ uri: '/graphql', });

const authLink = setContext((_, { headers }) => { // 从本地存储获取身份验证token const token = localStorage.getItem('token'); // 返回带有token的请求头 return { headers: { ...headers, authorization: token ? Bearer ${token} : "", } } });

const client = new ApolloClient({   //合并httplink link: authLink.concat(httpLink), cache: new InMemoryCache() });

服务器可以使用这个请求头来对用户进行身份验证,并将其附加到GraphQL执行上下文中,因此解析器可以根据用户的角色和权限修改他们的行为。

Reset store on logout

因为阿波罗缓存了所有的查询结果,所以当登录状态发生变化时,删除它们是必须的。 最简单方法是在登录或注销过程完成后调用client.resetstore()。这将导致store被清除,所有的查询都将被重新获取。

 App.logout().then(() => client.resetStore());

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容