Авторизация

Клиентское приложение отсылает POST- запрос на адрес ~/auth. В теле запроса содержатся следующие данные:

  • UserName: string
  • Password: string

Пример кода:

Ext.Ajax.request({
    url: this.getAuthUrl(),
    method: 'POST',
    params: {
        UserName: "login",
        Password: "password"
    },
    success: function (response) {
        // при удачном результате
        ...
    },
    failure: function (response) {
        // при ошибочном результате
        ...
    }
});

Пример запроса:

POST http://localhost/auth HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Length: 30
Pragma: no-cache
Cache-Control: no-cache
Origin: http:// localhost
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
Referer: http:// localhost/
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7

UserName=логин&Password=пароль

В ответ если данные были указаны верно, от сервера ожидается строка с JSON-данными:

  • token: string
  • user
    • claims: string[] – роли пользователя
    • userId: string – идентификатор пользователя
    • userName: string – имя пользователя

Пример ответа:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,GET
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 18 Apr 2018 08:22:43 GMT
Content-Length: 398

{"token":"YWRtaW4NCkFkb","user":{"userName":"admin","claims":["Admin","Manager"],"userId":"a407fae7-4feb-4bf1-93e8-de8d1287e4c2"}}

Результат запроса записывается в локальное хранилище браузера (localStorage):

  • isAuthorize: boolean — авторизован пользователь или нет
  • token: string — токен
  • token-date: string — дата получения токена
  • rememberMe: boolean — запомнить или нет
  • login: string — логин пользователя
  • user_id: string — идентификатор пользователя
  • roles: string — роли пользователя через запятую

Для передачи результата авторизации (токена) на сервер, при каждом запросе, применяется следующий код:

Ext.Ajax.setDefaultHeaders({
    "Authorization": "Token " + token
});

Если логин или пароль указан не верно, то ожидается ответ со статусом 401.
Пример ответа со статус кодом 401:

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,GET
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 18 Apr 2018 08:39:02 GMT
Content-Length: 0

Print Friendly, PDF & Email