我有一个如下所示的登录 API:
api.php
Route::post('/login', [LoginController::class, 'login']);
登录控制器.php
public function login(Request $request) {
$fields = $request->validate([
'email' => 'required|string',
'password' => 'required|string'
]);
// Check email
$user = User::where('email', $fields['email'])->first();
// Check password
if(!$user || !Hash::check($fields['password'], $user->password)) {
return response([
'message' => 'Bad creds'
], 401);
}
$token = $user->createToken('myapptoken')->plainTextToken;
$response = [
'user' => $user,
'token' => $token
];
return response($response, 201);
}
我从我的 Vue.js 前端组件调用这个 API:
Login.Vue 中的脚本
<script>
export default {
name: 'Login',
data() {
return {
user: {
email: null,
password: null
},
loading: false,
error: null
}
},
methods: {
async login() {
this.error = null;
try {
await this.$store.dispatch('login', this.user);
await this.$router.push({ name: 'posts' });
} catch (error) {
this.error = error;
}
finally {
this.loading = false;
}
}
}
}
</script>
存储/index.js
async login({ commit }, user) {
await repository.createSession();
const { data } = await repository.login(user);
commit('SET_USER', data);
sessionStorage.user = JSON.stringify(data);
sessionStorage.user_token = data.token;
}
问题是它仅在 Fiddler 也在运行时才有效。没有 Fiddler,我不会收到任何错误,但我也无法登录。有什么问题?