Как я могу получить мой user_id от авторизованного клиента

Я хочу получить идентификатор пользователя, который сейчас онлайн. Но я не могу сделать это с помощью следующего кода:

Route::middleware('auth:api')->post('/optionelections', function (Request $request) {
return $request->user();
});

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

это мое apply_election.vue

    import {apiDomain} from '../../config'
export default {
name: 'applyForElection',
data () {
return {
election: {},
newOption: {'election_id': ''},
//this is where the user_id should come
newOption: {'user_id': ''}

}
},
methods: {
createOption: function () {
var itemId = this.$route.params.id
this.newOption.election_id = itemId
this.$http.post(apiDomain + 'optionelections', this.newOption)
.then((response) => {
this.newOption = {'election_id': itemId}
alert('you applied!')
this.$router.push('/electionsnotstarted')
}).catch(e => {
console.log(e)
alert('there was an error')
this.$router.push('/electionsnotstarted')
})
}
},
created: function () {
var itemId = this.$route.params.id
this.$http.get('http://www.nmdad2-05-elector.local/api/v1/elections/' + itemId)
.then(function (response) {
this.election = response.data
})
}
}

И это по моему OptionElectionsController.php

public function store(Request $request)
{$optionElection = new OptionElection();
$optionElection->user_id = $request['user_id'];
$optionElection->option = "something";
$optionElection->votes = 0;
$optionElection->election_id = $request['election_id'];
$optionElection->accepted = 0;

if ($optionElection->save()) {return response()
->json($optionElection);

}

}

Это мое Auth.js

export default function (Vue) {
Vue.auth = {
setToken (token, expiration) {
localStorage.setItem('token', token)
localStorage.setItem('expiration', expiration)
},
getToken () {
var token = localStorage.getItem('token')
var expiration = localStorage.getItem('expiration')

if (!token || !expiration) {
return null
}
if (Date.now() > parseInt(expiration)) {
this.destroyToken()
return null
} else {
return token
}
},
destroyToken () {
localStorage.removeItem('token')
localStorage.removeItem('expiration')
},
isAuthenticated () {
if (this.getToken()) {
return true
} else {
return false
}
}
}

Object.defineProperties(Vue.prototype, {
$auth: {
get: () => {
return Vue.auth
}
}
})
}

0

Решение

Вы используете TokenGuard Laravel, Есть много способов, позволяющих охраннику распознать аутентификацию, лучшие методы:

  1. Отправьте токен в api_token атрибут в запросе запроса.

    this.newOption.api_token = token;
    
  2. Отправьте токен в Authorization заголовок с Bearer префикс.

    {
    headers: {
    Authorization: 'Bearer THE_TOKEN'
    }
    }
    
0

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

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

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