laravel - 错误":"token_not_provided:Laravel、Vue 和 JWT 中的 API 身份验证
问题描述
我在 Laravel 中创建 JWT API 身份验证,如指南中所述:
https://codeburst.io/api-authentication-in-laravel-vue-spa-using-jwt-auth-d8251b3632e0
其他一切都很好,但我在登录时遇到了这个问题: 错误“:”token_not_provided 登录似乎正在成功,正如我在控制台或邮递员中看到的那样,但从未检索到令牌。当应用程序尝试在 api/auth/user 端点加载用户数据时,就会发生这种情况。
GET http://127.0.0.1:8000/api/auth/user 400(错误请求)
这是我的登录方法:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if ( ! $token = JWTAuth::attempt($credentials)) {
return response([
'status' => 'error',
'error' => 'invalid.credentials',
'msg' => 'Invalid Credentials.'
], 400);
}
return response([
'status' => 'success'
]) ->header('Authorization', $token);
}
然后是用户方法
public function user(Request $request)
{
$user = User::find(Auth::User()->id);
return response([
'status' => 'success',
'data' => $user
]);
return $user;
}
认证路由:
Route::post('auth/login', 'JWTAuthenticateController@login');
Route::group(['middleware' => 'jwt.auth'], function(){
Route::post('auth/logout', 'JWTAuthenticateController@APIlogout');
Route::get('auth/user', 'JWTAuthenticateController@user');
});
VueJS 登录组件:
<script>
export default {
data(){
return {
email: null,
password: null,
error: false
}
},
methods: {
login(){
var app = this
this.$auth.login({
params: {
email: app.email,
password: app.password,
},
success: function () {
console.log('Success')
},
error: function () {
console.log('Something Went wrong!')
},
rememberMe: true,
redirect: {name:'inventories'},
fetchUser: true,
});
},
}
}
</script>
我无法弄清楚如何解决这个问题。只是不要告诉为什么没有返回授权标头:
return response([
'status' => 'success'
]) ->header('Authorization', $token);
请协助。
解决方案
推荐阅读
- cassandra - Cassandra:TTL vs 动态表 vs 大量删除
- android-studio - 如何使用 Actions Builder 打开 Android 应用程序?
- vue.js - 使用 Vuex 无需预编译
- ios - Capacitor 3 React App mediaDevices 未定义,iOS 14.5
- scala - 在Scala中只返回没有函数名的值
- macos - Mac 上无法识别 Ctrl、Alt、Cmd 和 Shift 键(Unity 3D)
- javascript - 在相同对象上设置值
- reactjs - findDOMNode 在 StrictMode 中已弃用。findDOMNode 被传递了一个 Transition 的实例(由 MUI Backdrop 创建),它位于 StrictMode 内部
- java - 访问不向表中插入新值
- amazon-web-services - 从redshift中的时间戳字符串中提取时间戳