如何使用javascript阅读烧瓶会话?

时间:2013-05-01 04:41:34

标签: javascript session angularjs flask

我有一个安全的烧瓶会议

session = "xC4tHoSZQVSHpVtnHUONYb/obAA=?USER_TOKEN=UycuZUp3Rndja1JnREFJQU1CZThwWVpqbkRWNHZpQW9QMlg0TzY5ZXN4MU5rTlZOaEM5RERuczBCRkRqSHFDY0YxTGZMSUM3WlNHdkxhZEpJUjZXcjh4ekZyUEQ5aUxFMEEuVGt0V3RqdTFKblVBVzV2SnRpSjd3M0NJZFdRJwpwMQou"

我正在使用angular.js Cookie来检索值,但它没有给我任何信息。

console.log('token - ' + $cookieStore.get('USER_TOKEN'));

如何使用Javascript访问USER_TOKEN的值?

2 个答案:

答案 0 :(得分:1)

我可能完全反对这一点,但我一直认为你无法使用Javascript访问会话数据,因为Werkzeug安全cookie模块使用了一些内部功能。我有计划尝试这个片段作为解决方法:

http://flask.pocoo.org/snippets/51/

但是在我有机会尝试之前,我不知道它是否可以用Flask的基本会话模块做一些缺乏的事情。

答案 1 :(得分:0)

因为问题被问到Flask默认切换到危险的客户端会话。

由于这仍然是这个问题的最佳google结果,我自己也有一些问题,现在就是如何做到这一点:

function parse_session(){
    var cookie = Cookies('session');
    if(! cookie) return;
    // Is the content ziped ?
    var un_64 = "";
    if(cookie[0] == "."){
        var data = cookie.split('.')[1].replace(/_/g, '/').replace(/-/g, '+');
        un_b64 = atob(data);
        un_b64 = pako.inflate(un_b64, {to: 'string'});
    }else{
        var data = cookie.split('.')[0].replace(/_/g, '/').replace(/-/g, '+');
        un_b64 = atob(data);
    }
    return jQuery.parseJSON(un_b64);
}

此代码段使用jquery,cookie.js和paco(解压缩)。 Flasks的'SESSION_COOKIE_HTTPONLY'配置变量需要设置为False才能在客户端读取会话。