Session 如何使用http身份验证保持会话?

Session 如何使用http身份验证保持会话?,session,angularjs,http-authentication,Session,Angularjs,Http Authentication,我在angular js应用程序中用于身份验证 以下是登录控制器内的登录功能: $scope.login = function() { var credentials = Base64.encode($scope.username + ':' + $scope.password); var config = { headers: { 'Authorization': 'Basic ' + credentials } }; $http.get('url/

我在angular js应用程序中用于身份验证

以下是登录控制器内的登录功能:

$scope.login = function() {
    var credentials = Base64.encode($scope.username + ':' + $scope.password);
    var config = { headers: { 'Authorization': 'Basic ' + credentials } };          
    $http.get('url/to/json/user', config)
        .success(function() {
            $http.defaults.headers.common['Authorization'] = 'Basic ' + credentials;
            authService.loginConfirmed();
            console.log('login success');
        })
        .error(function() {
            console.log('login failed');
    });
}
(base64是来自的加密服务)

问题是:如果用户已经登录,并且他打开了一个新选项卡,或者如果他重新加载页面,他必须再次登录


如果用户重新加载页面或来自外部链接,如何避免这种情况并保持会话打开

您可以使用cookie或html5数据存储来保存凭据或带有凭据的base64字符串。然后可以从那里加载它们,并将它们解析为$http.defaults.headers.common['Authorization']='Basic'+凭证


希望能有帮助

请注意:base64是编码,而不是加密。它很容易可逆,无需密钥,因此会混淆身份验证信息,并使其免受其他编码问题(如HTTP编码)的影响,但不会增强安全性。