php - 使用 Laravel 护照和 Vuejs。Auth::User() 在刀片上不起作用
问题描述
我正在使用 Laravel 8 护照对用户进行身份验证。从我的 Vuex 商店。我像这样发送登录操作:
login({ commit}, user) {
return new Promise((resolve, reject) => {
let url = `/auth/login`;
let email = user.email;
let password = user.password;
axios.post(url, { email, password })
.then(response => {
const token = response.data.token
const user = response.data.user
localStorage.setItem('AnimeStock.jwt', 'Bearer '+ token);
localStorage.setItem('AnimeStock.user', JSON.stringify(user));
axios.defaults.headers.common['Authorization'] = 'Bearer '+ token;
commit('AUTH_SUCCESS', {token, user});
resolve(response);
})
.catch(error => {
console.log(error)
commit('AUTH_ERROR', error.response.data.error)
localStorage.removeItem('AnimeStock.jwt')
localStorage.removeItem('AnimeStock.user')
reject(error)
})
})
}
这有效,并且用户已通过身份验证。接下来,我尝试像这样从我的 vue 组件中获取用户。
api.get(`/auth/user`).then(response => {
console.log(response.data)
});
我的 API 路线:
Route::group(['prefix' => 'auth'], function () {
//Auth routes
Route::post('login', 'AuthController@login');
Route::post('register', 'AuthController@register');
Route::group(['middleware' => 'auth:api'], function() {
Route::get('logout', 'AuthController@logout');
Route::get('user', 'AuthController@user');
});
});
它命中我的 AuthController 并返回当前登录的用户。
public function user()
{
$user = Auth::user();
return response()->json($user);
}
这是问题所在,当我在布局刀片文件上执行此操作时,它不起作用:
<script>
@auth
window.User= {!! json_encode(Auth::user(), true) !!};
@else
window.User= [];
@endauth
</script>
这也不起作用
<script>
@if(Auth::check())
window.User= {!! json_encode(Auth::user(), true) !!};
@else
window.User= [];
@endif
</script>
解决方案
推荐阅读
- c# - 实例化新字符串后,“对象(差异)”列(诊断工具)的值不会更改
- c++ - Qt - 如何从派生类发出信号?
- nginx - 如何让后端 api 处理 https 证书?
- javascript - 如何在垂直选项卡中呈现数据
- java - 鼠标光标移动后不改变位置
- sql - 从前一小时获取值并从 SQL 中的当前值中减去
- swift - 界面生成器上的 IBDesignable 问题
- c# - 为什么 C# 编译器不抛出 The given expression never of the provided type 警告
- c# - 时间:2019-01-01 标签:c#decoratorpatternsmultiplepropertieswrappingmultipletimes
- python - Mariadb 运行注释中的代码