使用JWT身份验证凭据的Laravel API(用户名/电子邮件)
我正在使用laravel和JWT Auth将我的laravel项目连接到mobile,这是我在laravel的api控制器使用JWT身份验证凭据的Laravel API(用户名/电子邮件),laravel,jwt,Laravel,Jwt,我正在使用laravel和JWT Auth将我的laravel项目连接到mobile,这是我在laravel的api控制器 public function login(Request $request) { $credentials = $request->only('email', 'password'); try { // attempt to verify the credentials and create a token for the user
public function login(Request $request) {
$credentials = $request->only('email', 'password');
try {
// attempt to verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
// something went wrong whilst attempting to encode the token
return response()->json(['error' => 'could_not_create_token'], 500);
}
// all good so return the token
$user = Sentry::authenticate($credentials, false);
return response()->json([
'code' => '200',
'message' => 'success',
'last_updated' => $user->updated_at->format("Y-m-d\TH:i:s\Z"),
'data' => [
'id' => $user->id,
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'email' => $user->email,
'username' => $user->username,
'token' => $token
]
]);
}
但是如何使用此JWT的电子邮件或用户名设置凭据?如果您使用的是“tymon/JWT auth”
包,那么您只需将用户
对象传递给JWTAuth
类和bam!,您可以获得JWT
令牌作为回报,您可以使用该令牌让用户浏览应用程序
$user = User::where('email', $email)
->orWhere('username', $username)
->first();
$token = null;
if (!$token = JWTAuth::fromUser($get_info)) {
return $this->respondInternalError( 'Can\'t generate the JWT token right now, try again later!', 'object', 400);
}
return response()->json([
'code' => '200',
'message' => 'success',
'last_updated' => $user->updated_at->format("Y-m-d\TH:i:s\Z"),
'data' => [
'id' => $user->id,
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'email' => $user->email,
'username' => $user->username,
'token' => $token
]
]);
您可以使用电子邮件或以下格式登录
公共功能登录(请求$Request)
{
//验证传入请求
$this->validate$请求[
'email_phone'=>'required | string',
“密码”=>“必需|字符串”,
]);
试一试{
$login\u type=filter\u var($request->email\u phone,filter\u VALIDATE\u email)?'email':'phone';
//返回$login\u type;
$credentials=[$login\u type=>$request->email\u phone,'password'=>$request->password];
if(!$token=Auth::trunt($credentials)){
return response()->json($this->customResponse(“失败”、“未经授权”),401);
}
返回$this->respondWithToken($token);
}捕获(JWTE异常$e){
return response()->json($this->customResponse(“失败”,“出现错误,请与支持部门联系。”,$user),500);
}
}
可能对你有帮助。你明白了吗>@Albert是的,我明白了out@yudijohn你是怎么做到的请分享我需要它@你是怎么做到的?