Аутентификация на основе токенов с Angular

Я хочу аутентифицировать пользователей через 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");
      });
}

2 ответа

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

эта ссылка может объяснить вам, как на основе токенов, так и на основе файлов cookie

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

и это из-за разницы между localStorage, sessionStorage, сеансом и файлами cookie: в чем разница между localStorage, sessionStorage, сеансом и файлами cookie?

Я настоятельно рекомендую вам использовать stallizer: https://github.com/sahat/satellizer

Войти с помощью электронной почты и пароля

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

Клиент: В форме отправьте запрос $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>
Другие вопросы по тегам