0 authentication laravel reactjs
当我尝试提交表单并验证它时,我收到以下错误消息:
方法 Illuminate\Validation\Validator::validateUsername 不存在。
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\LoginRequest;
use App\Http\Requests\RegisterRequest;
use App\Models\User;
use http\Env\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
class AuthController extends Controller
{
public function register(RegisterRequest $request)
{
$data = $request->validated();
/** @var \App\Models\User $user */
$user = User::create([
'username' => $data['username'],
'password' => bcrypt($data['password']),
]);
$token = $user->createToken('main')->plainTextToken;
return response(compact('user', 'token'));
}
public function login(LoginRequest $request)
{
$credentials = $request->validated();
if (!Auth::attempt($credentials)) {
return response([
'message' => 'Provided username or password is incorrect'
], 422);
}
/** @var \App\Models\User $user */
$user = Auth::user();
$token = $user->createToken('main')->plainTextToken;
return response(compact('user', 'token'));
}
public function logout(Request $request)
{
/** @var \App\Models\User $user */
$user = $request->user();
$user->currentAccessToken()->delete();
return response('', 204);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用此命令composer dump-autoload重新加载方法,但它不起作用
这是我的登录请求
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class LoginRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'username' => 'required|username|string|exists:users,username',
'password' => [
'required',
],
'remember' => 'boolean'
];
}
}
Run Code Online (Sandbox Code Playgroud)
我猜用户名规则有问题谢谢你们的回答:D
发布您的内容App\Http\Requests\LoginRequest和App\Http\Requests\RegisterRequest。username该错误表明您使用了名为未定义的自定义规则。
编辑:您使用了可能未定义的自定义“用户名”规则。删除“required”后的规则或定义它。
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
// Change this
'username' => 'required|username|string|exists:users,username',
// To this.
'username' => 'required|string|exists:users,username',
'password' => [
'required',
],
'remember' => 'boolean'
];
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您定义了自定义username规则,请确保您的操作正确。例如,将以下内容放入您的服务提供商中。
use Illuminate\Support\Facades\Validator;
public function boot()
{
Validator::extend('username', function ($attribute, $value, $parameters, $validator) {
// Custom validation logic goes here
// Return true if the validation passes, false otherwise
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |