首页 > 使用koa-jwt生成并存储token之后如何用于打开新页面?

使用koa-jwt生成并存储token之后如何用于打开新页面?

最近在学习koa写一个小demo,从login用ajax登录验证成功后返回token并且把token存在localstorage,然后自动跳转home,home的koa-route.get路由写在app.use(jwt({secret: config.app.secret}));后面,然而总是返回‘No Authorization header found’,jwt方式创建的token放在window.localStorage里怎么才能用在一个打开新页面的请求里呢?

以下是部分代码

app.use(route.post('/login', function *() {
    
    // 省略了验证过程
    // ...
    if (!user) {        
        this.throw(401, 'Incorrect username.');
    } else if (!ps.validatePass(credentials.password, user.password)) {
        this.throw(401, 'Incorrect password.');
    } else {
        user.id = user._id;
        delete user._id;
        delete user.password;
    }

    // sign and send the token along with the user info
    var token = jwt.sign(user, config.app.secret, {expiresIn: 90 * 24 * 60 * 60  /* 90 days */});
    this.body = {token: token, user: user};
}));

app.use(jwt({secret: config.app.secret}));

app.use(route.get('/', function *() {
    this.body = 'got u';
}));

如果使用cookie配合session是需要给每个路由增加验证,或者过滤器,使用jwt怎么做到某些页面的非登录状态的屏蔽呢?

我有找到github上一个框架是使用在html文件头部验证是否存在localstorage.user,并且把这个文件的路由写在koa-jwt外部,如果不存在localStorage.user就跳转登录页面,但是这种屏蔽是不是太简单了?

<script>
    // if user logs in with oauth, user token will be in localStorage so look for it.
    var token = window.sessionStorage.token || window.localStorage.token,
        user = token && JSON.parse(window.sessionStorage.user || window.localStorage.user);

    if (!user || user.exp < Math.round(new Date().getTime() / 1000)) {
        window.location.replace('/login');
    }
</script>

如果再加客户端到服务器端通信是不是会影响性能?

如果改写成SPA,不修改location跳转,那么储存了token之后直接进入第二页面如何实现?

【热门文章】
【热门文章】