0

Я хочу, чтобы аутентифицировать пользователей через api, когда имя пользователя и пароль верны, он возвращает токен и хранит на локальном хранилище с помощью ngStorage, но я прочитал некоторые статьи о том, что это не безопасный маркер сохранения на localStorage, и они сделали ссылка на его хранение в файлы cookie Http. Как я могу хранить маркер на печенье Http и Безопасно или есть лучший способ обработки маркеров аутентификацииАутентификация на основе токена с угловым

$scope.loginUser = function(){ 
    $http({ 
     method: 'POST', 
     url: 'ourdomain.com/api/token', 
     headers: 
     { 
      'Content-type': 'application/x-www-form-urlencoded', 
     }, 
     data: 
     'UserName=' + $scope.username + 
     '&Password=' + $scope.password 
     }).success(function(data, status) { 
       $localStorage.token = data; 
       console.log(data); 
     }) 
     .error(function(data, status) { 
      console.log("Error"); 
     }); 
} 
+0

Вы могли бы начать с глядя на угловой -cookies: https://github.com/angular/bower-angular-cookies – Rob

ответ

1

Горячо предлагает вам использовать stallizer: https://github.com/sahat/satellizer

Вход с Email и паролем

Клиент: введите свой адрес электронной почты и пароль в форму для входа.

Клиент: В режиме отправки вызова $ auth.login() с адресом электронной почты и паролем.

Клиент: Отправьте запрос POST в/auth/login. Сервер: Проверьте, если адрес электронной почты существует, если нет - возврат 401.

Сервер: Проверьте, если пароль правильный, если нет - возврат 401.

Сервер: Создание JSON веб-токен и отправить его обратно клиенту ,

Клиент: проанализируйте токен и сохраните его в локальном хранилище для последующего использования после перезагрузки страницы.

var user = { 
    email: $scope.email, 
    password: $scope.password 
}; 

$auth.login(user) 
    .then(function(response) { 
    // Redirect user here after a successful log in. 
    }) 
    .catch(function(response) { 
    // Handle errors here, such as displaying a notification 
    // for invalid email and/or password. 
    }); 


// Controller 
$scope.isAuthenticated = function() { 
    return $auth.isAuthenticated(); 
}; 

<!-- Template --> 
<ul ng-if="!isAuthenticated()"> 
    <li><a href="/login">Login</a></li> 
    <li><a href="/signup">Sign up</a></li> 
</ul> 
<ul ng-if="isAuthenticated()"> 
    <li><a href="/logout">Logout</a></li> 
</ul> 
+0

Могу ли я использовать это с помощью api? Я могу увидеть clientID, что такое clientID? Также я думаю, что он использует другой логин в социальной сети, но не с моим собственным API-интерфейсом API – user3055606

+0

, вам, вероятно, потребуется адаптировать ваш код. – thegio

+0

адаптировать мой код к тому, что? – user3055606

2

для печенья пользователь может отключить куки.

эта ссылка может объяснить вам лексема основе по сравнению с Cookie на основе

https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

и это разницу между LocalStorage, sessionStorage, сессии и печенье: What is the difference between localStorage, sessionStorage, session and cookies?

Смежные вопросы