Клиентское приложение отсылает 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