2016-06-03 4 views
1

Я использую локальной аутентификацию в моем feathersjs REST-API приложения, но после того, как проверка подлинности пользователя, вместо того чтобы посылать мне аутентификации маркера, перья отправляют следующий HTML в качестве ответа на запрос аутентификации :Как отправить токен JWT клиенту с аутентификацией feathersjs?

<body> 
    <img class="logo" src="alongbase64string" alt="Feathers Logo"> 
    <main> 
     <h1 class="center-text">Success</h1> 
     <h3 class="center-text">You are now logged in. We've stored your JWT in a cookie with the name 
      <span class="italic">"feathers-jwt"</span> for you. It is: 
     </h3> 
     <pre id="token"></pre> 
    </main> 
    <script type="text/javascript"> 
function getCookie(name) { 
    var value = "; " + document.cookie; 
    var parts = value.split("; " + name + "="); 
    if (parts.length == 2) return parts.pop().split(";").shift(); 
} 

var token = getCookie('feathers-jwt'); 

var el = document.getElementById('token'); 
el.innerHTML = token; 
</script> 

который печатает следующую страницу:

enter image description here

Я думаю, что это будет работать достаточно хорошо, если я отправлю запрос с веб-страницы, но в моем случае мне нужно получить токен, потому что клиент - мобильное приложение, а не веб-браузер, поэтому файлы cookie не будут работа для меня.

Возможно ли, чтобы feathersjs отправили токен в ответ? Что-то вроде:

{ 
    token: 'açldkjfaçldkfjçasdkfjdçakfjd' 
} 

Таким образом, я мог бы хранить маркер в мобильном приложении, а использовать его для аутентификации дальнейших запросов к моему feathersjs серверу API.

На данный момент я больше не буду вводить код, потому что приложение было сделано полностью с помощью команд консоли, доступных feathersjs, например feathers generate, но если кому-то нужно больше узнать о коде, просто дайте мне знать, и я отредактирует вопрос, добавив более подробную информацию.

+0

Предполагая, что шток, и [в соответствии с репо] (https://github.com/feathersjs/feathers-authentication/blob/d4f341d81f094336a8bf8eec524f1305195844ee/src/middleware/index.js#L36), маркер в заголовках ('req.headers [ 'авторизации'] '). Вы пробовали базовый 'res.send (токен)' вместо текущего 'res.sendFile ({authpage})' mechanic? – colonelsanders

+0

Да, я пробовал, но я не мог найти, куда он отправляет мне файл, иначе я бы послал токен напрямую, этого было бы достаточно. Кроме того, ссылка, которую вы передали мне, - это проверка маркера, отправленного клиентом на сервер, но мне нужно обратное, то есть мне нужно отправить токен с сервера клиенту. –

+1

[Здесь он отправляет файл с успешным успехом] (https://github.com/feathersjs/feathers-authentication/blob/d4f341d81f094336a8bf8eec524f1305195844ee/src/index.js#L150) – colonelsanders

ответ

4

Вы должны указать заголовок Accept в своем запросе application/json, иначе он примет HTML и отправит страницу, которую вы видите.

+0

Не могу поверить, что мне просто не хватало этого. Оно работает! Спасибо. –

+0

Не возражаете, если я задам соответствующий вопрос? Я хотел бы вернуть только некоторые поля пользователя, а не полные свойства модели. Я думал, что это может быть сделано путем установки массива 'payload' объекта аутентификации маркера, но это не сработало; каждое свойство отправляется клиенту вместе с токеном. Я не знаю, сделал ли я что-то неправильно или это на самом деле способ сделать это. –

+0

Похоже, что «крючки» - это функциональность, которую я ищу. Но я не знаю, как добавить привязку к службе аутентификации. Есть ли способ сделать это? –

0

Используйте локальное промежуточное программное обеспечение вместо схемы сокетов, на которую ссылается вопрос.

POST'ing регистрационных данных в /auth/local даст

{ 
    "token": {JWT}, 
    "data": { 
    "email": "[email protected]", 
    "id": 0 
    } 
} 

Ваш клиент может тянуть значения из этого ответа JSON и обрабатывать их соответствующим образом.

Большинство вещей, кроме этого, потребует модификации демонов фонда Feathers.

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

  • Нет связанных вопросов^_^