我应该在哪里存储jwt以进行移动身份验证

问题描述

我应该使用cookie还是asyncStorage存储令牌以使用它来检查用户是否通过passport-jwt登录

const cookieExtractor = (req) => {
    let token = null
    if(req && req.cookies){
        token = req.cookies.jwt
    }
    console.log(token)
    return token
}

passport.use(new jwtStrategy({jwtFromrequest:cookieExtractor,secretorKey:'sphinx'},(payload,done) => {
    user.findById(payload.userId,(err,User) => {
        if(err){
            return done(err,false)
        }
        if(User){
            return done(null,User)
        }else{
            return done(null,false)
        }
    })
}))

解决方法

您可以使用expo-secure-store

expo-secure-store提供了一种在设备上本地加密和安全存储键值对的方法。

要使用它,请先使用expo install expo-secure-store

进行安装

安装后,将在您的代码中使用import * as SecureStore from 'expo-secure-store'

导入它

现在,要使用expo-secure-store,您可以使用:

SecureStore.setItemAsync(key,value,options) //to set one item
SecureStore.getItemAsync(key,options) //to get one item
SecureStore.deleteItemAsync(key,options) //to delete one item

当我设置一个具有一种功能的按键时,我将举一个例子:

import * as SecureStore from 'expo-secure-store'

const signin = dispatch => async ({ token }) => {
  await SecureStore.setItemAsync('token',token)
};

您可以了解有关expo-secure-store here

的更多信息