如何通过令牌laravel护照获取用户ID?

问题描述 投票:0回答:1

我尝试在登录后对用户进行身份验证,但它向我显示一个错误,试图获取非对象的属性”照片”。有人帮忙吗?PS:当我尝试登录时,将我重定向到home.blade.php,他不知道用户已通过身份验证

这是loginForm.vue:

 <template>
 <form>
 <div class="form-group">
 <label for="exampleInputEmail1">Adresse Email:</label>
 <input type="email" class="form-control" v-model="user.email" id="exampleInputEmail1" aria- 
 describedby="emailHelp">
  </div>
<div class="form-group">
 <label for="exampleInputPassword1">Mot de passe:</label>
 <input type="password" class="form-control" v-model="user.password" 
id="exampleInputPassword1">
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" @click="login"    class="btn btn-primary">Submit</button>
 </form>
 </template>
<script>
 export default{
   data:()=>({
   user:{
      email:"",
      password:""
  }
  }),
 methods: {
 login(){
this.$store.dispatch('currentUser/loginUser',this.user);

 }
 }
 }
 </script>

这是currentUser.js:

import axios from "axios";

const state ={
 user:{

 }

 };
const getters= {};
const actions = {
getUser({commit}){
    axios.post("api/userauth")
    .then(response=>{
  commit('setUser',response.data);
    });
},
loginUser({},user){
   axios.post("/api/login",{
       email: user.email,
       password: user.password
   })
   .then(response=>{
       console.log(response.data);
      if( response.data.acces_token){
           //save token mte3na fi locoal storage
           localStorage.setItem(
               "membre_token",
               response.data.acces_token
           )
           console.log('anis');
           window.location.replace('/home');
       }

   })
}
};
const mutations={
setUser(state,data){
    state.user=data;
}
};

export default{
namespaced:true,
state,
getters,
 actions,
 mutations
}

此AuthenController.php:

    public function login(Request $request){
    $validation= $this->validate($request,[
       'email'  =>'required|email',
       'password'=>'required',
      ]);

   if(!Auth::attempt($validation)){
       return response(['status'=>'error','message'=>'user Undefined']);
     }
   $accesToken =Auth::user()->createToken('TokenName')->accessToken;
   return response(['user'=>Auth::user(), 'acces_token'=>$accesToken]);
   }

这是我的home.blade.php中导致错误的部分:

    <div class="sidebar">
  <!-- Sidebar user panel (optional) -->
  <div class="user-panel mt-3 pb-3 mb-3 d-flex">
    <div class="image" >
      <img src="\img\profile\{{ auth('api')->user()->photo }}" class="img-circle elevation- 
       2" alt="User Image">

     </div>
laravel vue.js access-token laravel-passport
1个回答
0
投票

似乎您的access_token缺少魔术字Bearer

尝试以下方法

//...
$accesToken = 'Bearer ' . Auth::user()->createToken('TokenName')->accessToken;
//...
© www.soinside.com 2019 - 2024. All rights reserved.