2

angular-js アプリでの認証にangular-http-authを使用しています。

ログインコントローラー内のログイン関数は次のとおりです。

$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はここから来る暗号化サービスです)

問題: ユーザーがすでにログインしているときに新しいタブを開くか、ページをリロードすると、再度ログインする必要があります。

ユーザーがページをリロードしたり、外部リンクからアクセスした場合に、それを回避してセッションを開いたままにしておくにはどうすればよいでしょうか?

4

1 に答える 1

3

Cookie または html5 データストアのいずれかを使用して、資格情報または資格情報を含む base64 文字列を保存できます。そこからそれらをロードして、 $http.defaults.headers.common['Authorization'] = 'Basic ' + credentials; に解析できます。

それが役に立てば幸い。

于 2013-09-29T10:09:51.363 に答える