Php 如何通过API-Laravel 5.8登录用户?

Php 如何通过API-Laravel 5.8登录用户?,php,laravel,laravel-5,restful-authentication,laravel-5.8,Php,Laravel,Laravel 5,Restful Authentication,Laravel 5.8,我使用的是Laravel5.8和PHP7.2 我需要调整身份验证的方式 之前 我曾经通过我的本地数据库从users表登录我的用户 如果电子邮件+密码匹配,我将登录 $email = strtolower(Input::get('email')); $password = Input::get('password'); $dbAuth = Auth::attempt(array( 'email' => $email, 'password' => $password,

我使用的是Laravel5.8和PHP7.2

我需要调整身份验证的方式

之前 我曾经通过我的本地数据库从users表登录我的用户

如果电子邮件+密码匹配,我将登录

$email = strtolower(Input::get('email'));
$password = Input::get('password');

$dbAuth = Auth::attempt(array(
    'email' => $email,
    'password' => $password,
    'active' => 1
));

if ($dbAuth) {
    Session::put('user', Auth::user());
    return Redirect::to('/dashboard')->with('success', 'You have been successfully logged in.');

} else {
    return Redirect::to('/')->with('error', 'Username/Password Wrong')->with('email', $email)->withErrors($validator);
}
现在 现在我需要调用
/login
API,它将返回一个
令牌。
我需要将该令牌存储到浏览器的本地存储中

我需要确保我的
Auth::user()
将根据更改工作

我怎么开始

谁能帮我点灯吗

使用,然后你就可以这样做了

公共功能登录(请求$Request)
{
$request->validate([
'email'=>'必填|字符串| email',
“密码”=>“必需|字符串”,
'记住我'=>'布尔',
]);
$credentials=请求(['email','password']);
如果(!Auth::trunt($credentials)){
返回响应()->json([
'消息'=>'未经授权'
], 401);
}
$user=$request->user();
$tokenResult=$user->createToken('Personal Access Token'.str_random(10));
$token=$tokenResult->token;
如果($request->记住我){
$token->expires_at=Carbon::now()->addWeeks(10);
}
$token->save();
返回响应()->json([
“访问令牌”=>$tokenResult->accessToken,
'令牌类型'=>'承载',
'expires_at'=>Carbon::parse(
$tokenResult->token->expires\u at)
->toDateTimeString(),
]);
}
这将为您提供一个用于以下请求的访问令牌

以下是一个
注册
控制器方法的示例,该方法使用Laravel Passport的
createToken()
方法生成唯一的访问令牌。您可以使用类似的功能在用户登录时返回此令牌

公共功能寄存器(请求$Request)
{
$validator=validator::make($request->all(),[
“名称”=>“必需”,
“电子邮件”=>“必需”|电子邮件”,
“密码”=>“必需”,
“重新键入密码”=>“必需”|相同:密码”,
]);
如果($validator->fails()){
return response()->json($validator->errors(),response::HTTP\u禁止);
}
$user=user::firstOrCreate(
['email'=>$request->email],
['name'=>$request->name,'password'=>bcrypt($request->password)]
); 
$response=[
'token'=>$user->createToken('MyApp')->accessToken
];
return response()->json($response,response::HTTP_-CREATED);
}
您可以使用JWT

安装jwt之后,您可以使用此代码登录并返回令牌:

public function login() {
    /// validation 

    $credentials = request(['email', 'password']);
    if (!$token = auth('api')->attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }
    return response()->json([
        'token' => $token, // Token
        'expires' => auth('api')->factory()->getTTL() * 60, // Expiration
    ]);
}

链接到JWT设置?@kyo,记住我不需要构建它,我只需要调用API;哦您可以使用guzzle调用api,用于auth的后端api已经存在于NodeJS中,我只需要调用它,解析它。你认为我还需要Passport吗?用于auth的后端API已经存在于NodeJS中,我只需要调用它,解析它。你认为我还需要护照吗?如果你使用外部身份验证服务就不需要了。但是这个例子对你没有帮助。您必须实现一种不同的方法来从API获取令牌。