I am using JWT for my React Redux app auth, also I have a plenty services that need my secret token.
I am saving JWT token in cookies, as well as in coalesce
object of my unknown
reducer.
So every time I need to do request I am passing secret with =IF(ISBLANK('Sheet2'!A1),"",'Sheet2'!A1)
like this
user
this is my service
common
so I am interested what is right way to access JWT token, from redux store like I am doing or from cookies directly from service?
答案 0 :(得分:1)
这就是Redux Middleware的用武之地 - 基本上它是处理更复杂类型操作的一种方式。最常用的中间件是redux-thunk(https://github.com/gaearon/redux-thunk),它允许您调度有权访问redux状态的函数。因此,使用redux-thunk,您可以将您的秘密存储在redux中并执行此操作:
const requestDataAction = () => ( dispatch, getState ) => {
const secret = getState().user.secret;
getAdminData( secret ).then( adminData => {
dispatch({ type: "UPDATE_ADMIN_DATA", adminData });
});
};
这是一个返回函数的函数,这有点令人困惑,但它确实有意义。外部函数是您从React组件调用的函数(在使用mapPropsToDispatch连接之后)。内部的是由中间件处理的thunk,它为你注入dispatch和getState函数。
这样做的好处是你不需要你的秘密"在你的React组件中成为一个道具,因为它从未用于渲染任何东西,它只是在动作中使用过,
答案 1 :(得分:0)
使用axios,您可以在加载服务文件时创建新实例。因此,您将导出此实例,如下所示:
C13=C13+F13
然后在同一个文件中,您可以导出一个函数来设置用户令牌:
export const fetch = axios.create({
baseURL: [YOUR SERVICE BASE URL]
})
因此,您可以在任何地方调用服务:
export function setUserSecret (secret) {
fetch.defaults.params['secret'] = secret
}