Laravel "message": "", "exception": "Symfony\Component\HttpKernel\Exception\NotFoundHttpException", "file":
Laravel "message": "", "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException", "file":
我正在使用 Laravel 7 并且我安装了 passport 作为依赖项。当我发出登录/注册请求时,它失败并显示错误
{ "message": "", "exception": "Symfony\Component\HttpKernel\Exception\NotFoundHttpException", "file": ".../vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php", "line": 43, "trace": [ { "file": "/Users/macbookpro/.../vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php", "line": 162,...
我的路线是这样的:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('api/v1/login', 'API\UserController@login');
Route::post('api/v1/register', 'API\UserController@register');
Route::group(['middleware' => 'auth:api'], function(){
//Route::post('details', 'API\UserController@details');
});
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
我的控制器是这样的:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public $successStatus = 200;
public function login(Request $request){
//dd('hello');
return response()->json(['error'=> 'Mike'], 500);
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
//$email = request
$success['token'] = $user->createToken('MyApp')-> accessToken;
return response()->json(['success' => $success], $this-> successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
if ($validator->fails()) {
return response()->json(['error'=>$validator->errors()], 401);
}
$input = $request->all();
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$success['token'] = $user->createToken('MyApp')-> accessToken;
$success['name'] = $user->name;
return response()->json(['success'=>$success], $this-> successStatus);
}
...
这是我通过邮递员发送的 "POST" 请求:
http://localhost:8000/api/v1/login?email=test1@mail.com&password=password
当我这样更改路由配置时:
Route::post('api/v1/login', dd('hello'));
我在邮递员上得到了相应的"hello"。
终于找到问题的原因了。 laravel/passport 似乎默认使用 "api" 作为 api.php 文件中的路由。路线应该是这样的:
...
Route::post('v1/login', 'API\UserController@login');
Route::post('v1/register', 'API\UserController@register');
...
我正在使用 Laravel 7 并且我安装了 passport 作为依赖项。当我发出登录/注册请求时,它失败并显示错误
{ "message": "", "exception": "Symfony\Component\HttpKernel\Exception\NotFoundHttpException", "file": ".../vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php", "line": 43, "trace": [ { "file": "/Users/macbookpro/.../vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php", "line": 162,...
我的路线是这样的:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('api/v1/login', 'API\UserController@login');
Route::post('api/v1/register', 'API\UserController@register');
Route::group(['middleware' => 'auth:api'], function(){
//Route::post('details', 'API\UserController@details');
});
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
我的控制器是这样的:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public $successStatus = 200;
public function login(Request $request){
//dd('hello');
return response()->json(['error'=> 'Mike'], 500);
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
//$email = request
$success['token'] = $user->createToken('MyApp')-> accessToken;
return response()->json(['success' => $success], $this-> successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
if ($validator->fails()) {
return response()->json(['error'=>$validator->errors()], 401);
}
$input = $request->all();
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$success['token'] = $user->createToken('MyApp')-> accessToken;
$success['name'] = $user->name;
return response()->json(['success'=>$success], $this-> successStatus);
}
...
这是我通过邮递员发送的 "POST" 请求:
http://localhost:8000/api/v1/login?email=test1@mail.com&password=password
当我这样更改路由配置时:
Route::post('api/v1/login', dd('hello'));
我在邮递员上得到了相应的"hello"。
终于找到问题的原因了。 laravel/passport 似乎默认使用 "api" 作为 api.php 文件中的路由。路线应该是这样的:
...
Route::post('v1/login', 'API\UserController@login');
Route::post('v1/register', 'API\UserController@register');
...