javascript - 使用koa-jwt生成并存储token之后如何用于打开新页面?
巴扎黑
巴扎黑 2017-04-11 10:07:42
[JavaScript讨论组]

最近在学习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之后直接进入第二页面如何实现?

巴扎黑
巴扎黑

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号