Laravel 5.1 + Vue.js — vue-router до каждого AuthService

Скажем, я хочу создать AutheService в vue-router для проверки текущего сеанса перед переходом к следующему маршруту, как в примере на:

http://vuejs.github.io/vue-router/en/api/before-each.html

router.beforeEach(function ({ to, next }) {
if (to.path === '/auth-required') {
// return a Promise that resolves to true or false
return AuthService.isLoggedIn()
} else {
next()
}
})
  • Как подходить к этому для использования в Laravel 5.1 без использования JSON Web Tokens (JWT)?
  • Есть ли подход «наилучшей практики» к SESSION_DRIVER в Laravel, ex. Redis, для этого сценария?

Я много раз искал в Интернете, но никогда не видел ни одной попытки аутентифицировать сеанс с vue-router без JWT.

4

Решение

Для вашего кода вы хотите переместить проверку подлинности isLoggedIn () в оператор if. Ваша служба аутентификации должна возвращать логическое значение, если пользователь вошел в систему. Внутри if вы бы направили пользователя по соответствующему пути. beforeEach работает как «Что мы должны сделать перед обработкой каждого маршрута?» поэтому вам не нужно возвращать истинное значение внутри оператора if.

router.beforeEach(function (transition) {
if (transition.to.auth && !AuthService.isLoggedIn()) {
// if route requires auth and user isn't authenticated
transition.redirect('/login')
} else {
transition.next()
}
})

Если вы хотите «проверять текущий сеанс перед переходом к следующему маршруту» каждый раз, ваш isLoggedIn () должен будет каждый раз вызывать API входа в систему. Обычно это не лучшая практика, потому что после входа в систему, зачем вам нужно проверять снова? Вот почему существуют токены и JWT. После входа в систему вы получаете токен, запоминаете этот токен и отправляете токен в следующих запросах.

Как подходить к этому для использования в Laravel 5.1 без использования JSON Web?
Жетоны (JWT)?

Технически не JWT, вы можете использовать токены API. API-токены могут быть сгенерированы с помощью Laravel str_random() функция. Вы бы ассоциировали 1 токен на пользователя и оставляли токены уникальными. Этот токен можно поместить в 2 местах: 1. в URL-адресе для параметра? Api_token = XXX 2. в заголовке для «Авторизация: Носитель XXX».

Если вы собираетесь с заголовками, в Vue.js, вы должны настроить vue-resource в качестве таких:

Vue.http.headers.common['Authorization'] = 'Bearer ' + token;

и тогда все ваши запросы теперь содержат токен API.

Есть ли подход «наилучшей практики» к SESSION_DRIVER в Laravel, ex.
Redis, для этого сценария?

Не уверен на 100%, что вы имеете в виду, но токены считаются одним из лучших способов взаимодействия с API. Вы обмениваетесь токеном с каждым веб-запросом, так что вам не нужно каждый раз отправлять имя пользователя / пароль.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]