laravel - Laravel - 测试 api 时方法 Illuminate\Auth\RequestGuard::attempt 不存在
问题描述
我将 Laravel-Passport 用于我的 api 端点的 Laravel 5.8 身份验证
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;
use Validator;
public function login(Request $request)
{
$validator = Validator::make($request->all('email', 'password'), [
'email' => 'required|string|email|max:255',
'password' => 'required|string|min:6'
]);
if ($validator->fails()) {
return response()->json(['error'=>$validator->errors()], 401);
};
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')-> accessToken;
return response()->json(['success' => $success], 200);
}
else{
return response()->json(['error'=>'Can not log in with the data provide.'], 401);
}
}
授权文件
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
当我在 POSTMAN 上测试端点时,我收到了这个错误:
错误的原因是什么,我该如何解决?
BadMethodCallException 方法 Illuminate\Auth\RequestGuard::attempt 不存在。
解决方案
要使用用户名和密码登录用户,您需要web
像这样使用身份验证保护:
if(Auth::guard('web')->attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::guard('web')->user();
推荐阅读
- javascript - 将 javascript 代码的输出放入文件中
- bash - 从文本文件中提取列值等于模式的行
- arrays - 如何在 Solidity 合约中存储字符串?
- .net - System.Threading.Tasks.Dataflow:为什么标准块类型是用 List 而不是 Queue 实现的?
- core-plot - xcode 10 coreplot 消息传递不合格 id
- swift - 需要在扩展的 UITableViewCell 中编辑 UITextView
- javascript - ui-scroll 使用相同数据源的两个表并同步滚动两个表
- regex - 仅打印包含三个连续数字的行
- typescript - 我可以使用 Babel 转译 ECMA 和 Typescript 吗?
- rest - 在 api 调用之前放心的 Microsoft 登录