我正在尝试将laravel Passport用于我的Web应用程序,下面的代码显示了我如何实现控制器。
public function login(Request $request){
$validateInputs =
Validator::make(
$request->all(),
[
'email'=>'required',
'password' => 'required'
]
);
if($validateInputs->fails()){
return response()->json(['errors' => $validateInputs->errors(),'registrationerror'=>'Login failed' ]);
} else {
$userEmail = User::where('email', $request->email)->first();
if(!$userEmail){
return response(['status'=>'error','message' => 'User not found']);
} else {
if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){
$request->request->add([
'grant_type' => 'password',
'client_id' => '2',
'client_secret' => '7VnHdWYHJQpqg1RU0cWXtbTl33lmdFHDF6W2HiSo',
'username' => $request->email,
'password' => $request->password,
'scope' => '',
]);
$token = Request::create(
'oauth/token',
'POST'
);
return \Route::dispatch($token);
}else{
return response(['status'=>'error','messagePw' => 'Please check the password']);
}
}
}
}
然后我将Vuetify用作前端。这是示例代码
<script>
import axios from 'axios'
// import router from '../router'
import EventBus from './EventBus'
export default {
data () {
return {
email: null,
password: null
}
},
methods: {
login () {
axios.post('/login', {
email: this.email,
password: this.password
})
.then((response) => {
console.log(response)
let accessToken = response.data.access_token
if (accessToken) {
localStorage.setItem('token', accessToken)
localStorage.setItem('user', this.email)
EventBus.$emit('loggedIn')
window.isSignedIn = true
this.$router.push('/dashboard')
}
})
.catch((err) => {
console.log(err)
})
this.emitMethod()
},
emitMethod () {
EventBus.$emit('logged-in', 'loggedin')
}
}
}
</script>
我的问题是如何验证每个URL中的客户端。现在,我要做的是如果登录功能返回访问令牌,它将作为令牌保存在本地存储中,然后登录组件将检查本地存储中是否存在令牌。所以我知道这个方法不是一个好方法。因为我看到可以手动将字段设置为令牌。这个问题可能并不专业,但是如果有人可以告诉我如何解决此问题。请告诉我如何在api请求中使用laravel护照验证用户。谢谢