猿问

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

我使用 Laravel 5.8,PHP 7.2。


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


我曾经通过用户表中的本地数据库登录我的用户。


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


$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);

}

现在

现在我需要调用/loginAPI,它将返回一个token. 我需要将该令牌存储到浏览器的本地存储中。


我需要确保我的Auth::user()工作基于变化。


我该如何开始?


有人可以点亮一些灯吗?


PIPIONE
浏览 189回答 3
3回答

慕码人8056858

您可以使用 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    ]);}

神不在的星期二

使用Laravel Passport然后你可以做这样的事情public function login(Request $request)    {        $request->validate([            'email' => 'required|string|email',            'password' => 'required|string',            'remember_me' => 'boolean',        ]);        $credentials = request(['email', 'password']);        if (!Auth::attempt($credentials)) {            return response()->json([                'message' => 'Unauthorized'            ], 401);        }        $user = $request->user();        $tokenResult = $user->createToken('Personal Access Token ' . str_random(10));        $token = $tokenResult->token;        if ($request->remember_me) {            $token->expires_at = Carbon::now()->addWeeks(10);        }        $token->save();        return response()->json([            'access_token' => $tokenResult->accessToken,            'token_type' => 'Bearer',            'expires_at' => Carbon::parse(                $tokenResult->token->expires_at)                ->toDateTimeString(),        ]);    }这将为您提供一个访问令牌以用于您的以下请求

catspeake

下面是一个控制器方法的例子,register它使用 Laravel Passport 的createToken()方法来生成唯一的访问令牌。您可以使用类似的功能在用户登录时返回此令牌。public function register(Request $request){    $validator = Validator::make($request->all(), [         'name' => 'required',         'email' => 'required|email',         'password' => 'required',         'retype_password' => 'required|same:password',     ]);    if ($validator->fails()) {         return response()->json($validator->errors(), Response::HTTP_FORBIDDEN);                }    $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);}
随时随地看视频慕课网APP
我要回答