|
|
@@ -103,6 +103,33 @@ $(document).ready(function(){
|
|
|
}
|
|
|
};
|
|
|
})();
|
|
|
+ var Session = (function(){
|
|
|
+ var key = 'session';
|
|
|
+ return {
|
|
|
+ load: function() {
|
|
|
+ return Store.get(key);
|
|
|
+ },
|
|
|
+ loadData: function(data) {
|
|
|
+ data.span = data.timestamp - new Date().getTime();
|
|
|
+ Store.set(key, data);
|
|
|
+ },
|
|
|
+ isValid: function() {
|
|
|
+ var token = this.load();
|
|
|
+ return token && token.timestamp + token.expire * 1000 > new Date().getTime() + token.span;
|
|
|
+ },
|
|
|
+ get: function(prop) {
|
|
|
+ var token = this.load();
|
|
|
+ return token ? token[prop] : null;
|
|
|
+ },
|
|
|
+ set: function(prop, value) {
|
|
|
+ var token = this.load();
|
|
|
+ if (token) {
|
|
|
+ token[prop] = value;
|
|
|
+ Store.set(key, token);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })();
|
|
|
var setUserProfile = function(account) {
|
|
|
if (account) {
|
|
|
$(".login").css("display","none");
|
|
|
@@ -115,14 +142,16 @@ $(document).ready(function(){
|
|
|
}
|
|
|
};
|
|
|
// 已经登录过从Store取出信息
|
|
|
- setUserProfile(Store.get('account'));
|
|
|
+ setUserProfile(Session.get('account'));
|
|
|
// socket
|
|
|
var listenOnCallback = function(clientId, resolve) {
|
|
|
var socket = new SockJS(env.server.baseUrl + "/ws");
|
|
|
stompClient = Stomp.over(socket);
|
|
|
stompClient.connect({}, function(frame) {
|
|
|
stompClient.subscribe('/clients/' + clientId + '/sso/callback', function(message){
|
|
|
- resolve(JSON.parse(message.body));
|
|
|
+ stompClient.disconnect(function(){
|
|
|
+ resolve(JSON.parse(message.body));
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
@@ -142,8 +171,9 @@ $(document).ready(function(){
|
|
|
encodeURIComponent(env.server.baseUrl + '/api/auth/sso/callback/' + clientId));
|
|
|
$('#box').show();
|
|
|
listenOnCallback(clientId, function(data){
|
|
|
- var account = data.account;
|
|
|
- Store.set('account', account);
|
|
|
+ var session = data.token, account = data.account;
|
|
|
+ session.account = account;
|
|
|
+ Session.loadData(session);
|
|
|
setUserProfile(account);
|
|
|
$('#box').hide();
|
|
|
$(".zhezhao").css("display","none");
|