Laravel 护照注册错误响应
Laravel Passport register wrong response
我正在创建一个 Laravel API 用于身份验证和数据库管理。在我的 AuthController 中,我有一个运行良好的登录功能和一个不起作用的注册功能。它没有返回新用户信息和 201 状态,而是 returns 一个 200 并显示 API 的主页(welcome.blade.php 创建了 Laravel)。
我在api.php的路线:
Route::post('login', 'AuthController@login');
Route::post('register', 'AuthController@register');
我的授权控制器:
class AuthController extends Controller
{
/**
* Register user
*/
public function register(Request $request)
{
$request->validate([
'firstname' => 'required|string',
'surname' => 'required|string',
'email' => 'required|email|unique:users',
'password' => 'required|string|confirmed'
]);
$user = new User([
'firstname' => $request->firstname,
'surname' => $request->surname,
'email' => $request->email,
'password' => bcrypt($request->password)
]);
$user->save();
$success['token'] = $user->createToken('MyApp')->accessToken;
$success['firstname'] = $user->firstname;
$success['surname'] = $user->surname;
$success['email'] = $user->email;
return response()->json(['success' => $success], 201);
}
/**
* Login user and create token
*
* @param [string] email
* @param [string] password
* @param [boolean] remember_me
* @return [string] access_token
* @return [string] token_type
* @return [string] expires_at
*/
public function login(Request $request)
{
$request->validate([
'email' => 'required|email|exists:users,email',
'password' => 'required|string',
// 'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
{
return response()->json([
'message' => 'Unauthorized',
'request'=> $credentials
], 401);
}
$user = Auth::user();
$tokenResult = $user->createToken('ApiPassToken');
$token = $tokenResult->token;
if ($request->remember_me)
{
$token->expires_at = Carbon::now()->addWeeks(1);
}
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
寄存器函数有什么问题?
我认为这是为了您的验证。当您的验证失败时,您必须 return 一个 json 否则它将是 return 最后一次查看。像这样进行验证
$validator = Validator::make($request->all(), [
'firstname' => 'required|string',
'surname' => 'required|string',
'email' => 'required|email|unique:users',
'password' => 'required|string|confirmed'
]);
if ($validator->fails()) {
return response()->json(['message' => $validator->errors()->first(), 'status' => false], 500);
}
并记住使用验证器 class
use Illuminate\Support\Facades\Validator;
我正在创建一个 Laravel API 用于身份验证和数据库管理。在我的 AuthController 中,我有一个运行良好的登录功能和一个不起作用的注册功能。它没有返回新用户信息和 201 状态,而是 returns 一个 200 并显示 API 的主页(welcome.blade.php 创建了 Laravel)。
我在api.php的路线:
Route::post('login', 'AuthController@login');
Route::post('register', 'AuthController@register');
我的授权控制器:
class AuthController extends Controller
{
/**
* Register user
*/
public function register(Request $request)
{
$request->validate([
'firstname' => 'required|string',
'surname' => 'required|string',
'email' => 'required|email|unique:users',
'password' => 'required|string|confirmed'
]);
$user = new User([
'firstname' => $request->firstname,
'surname' => $request->surname,
'email' => $request->email,
'password' => bcrypt($request->password)
]);
$user->save();
$success['token'] = $user->createToken('MyApp')->accessToken;
$success['firstname'] = $user->firstname;
$success['surname'] = $user->surname;
$success['email'] = $user->email;
return response()->json(['success' => $success], 201);
}
/**
* Login user and create token
*
* @param [string] email
* @param [string] password
* @param [boolean] remember_me
* @return [string] access_token
* @return [string] token_type
* @return [string] expires_at
*/
public function login(Request $request)
{
$request->validate([
'email' => 'required|email|exists:users,email',
'password' => 'required|string',
// 'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
{
return response()->json([
'message' => 'Unauthorized',
'request'=> $credentials
], 401);
}
$user = Auth::user();
$tokenResult = $user->createToken('ApiPassToken');
$token = $tokenResult->token;
if ($request->remember_me)
{
$token->expires_at = Carbon::now()->addWeeks(1);
}
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
寄存器函数有什么问题?
我认为这是为了您的验证。当您的验证失败时,您必须 return 一个 json 否则它将是 return 最后一次查看。像这样进行验证
$validator = Validator::make($request->all(), [
'firstname' => 'required|string',
'surname' => 'required|string',
'email' => 'required|email|unique:users',
'password' => 'required|string|confirmed'
]);
if ($validator->fails()) {
return response()->json(['message' => $validator->errors()->first(), 'status' => false], 500);
}
并记住使用验证器 class
use Illuminate\Support\Facades\Validator;