Laravel 5 类App\Http\Controllers\API\UserController不存在
我有一个问题,就是邮递员没有收到代币,还有下面的问题 反射异常 …\vendor\laravel\framework\src\illumb\Container\Container.php790 用户控制器不存在 我的路线文件强>Laravel 5 类App\Http\Controllers\API\UserController不存在,laravel-5,oauth,oauth-2.0,passport.js,passport-google-oauth,Laravel 5,Oauth,Oauth 2.0,Passport.js,Passport Google Oauth,我有一个问题,就是邮递员没有收到代币,还有下面的问题 反射异常 …\vendor\laravel\framework\src\illumb\Container\Container.php790 用户控制器不存在 我的路线文件 Route::post('login', 'API\UserController@login'); Route::post('register', 'API\UserController@register'); Route::group(['middleware' =&
Route::post('login', 'API\UserController@login');
Route::post('register', 'API\UserController@register');
Route::group(['middleware' => 'auth:api'], function(){
Route::post('details', 'API\UserController@details');
});
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Support\Facades\Auth;
use Validator;
use Illuminate\Http\Request;
class UserController extends Controller {
//
public $successStatus = 200;
/**
* login api
*
* @return \Illuminate\Http\Response
*/
public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')-> accessToken;
return response()->json(['success' => $success], $this-> successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
/**
* Register api
*
* @return \Illuminate\Http\Response
*/
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);
}
/**
* details api
*
* @return \Illuminate\Http\Response
*/
public function details()
{
$user = Auth::user();
return response()->json(['success' => $user], $this-> successStatus);
}
}
我的控制器文件强>
Route::post('login', 'API\UserController@login');
Route::post('register', 'API\UserController@register');
Route::group(['middleware' => 'auth:api'], function(){
Route::post('details', 'API\UserController@details');
});
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Support\Facades\Auth;
use Validator;
use Illuminate\Http\Request;
class UserController extends Controller {
//
public $successStatus = 200;
/**
* login api
*
* @return \Illuminate\Http\Response
*/
public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')-> accessToken;
return response()->json(['success' => $success], $this-> successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
/**
* Register api
*
* @return \Illuminate\Http\Response
*/
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);
}
/**
* details api
*
* @return \Illuminate\Http\Response
*/
public function details()
{
$user = Auth::user();
return response()->json(['success' => $user], $this-> successStatus);
}
}
如何解决此问题?如果控制器路径为
/App/Http/Controllers/API
,则需要调整其命名空间:
namespace-App\Http\Controllers\API;
如果控制器路径为
/App/Http/Controllers
,则需要调整路由:
Route::post('login','UserController@login');
只需在名称空间中编写文件夹扩展即可
比如你的情况
namespace-App\Http\Controllers\API代码>
在途中,你只需写
Route::post('register','api\UserController@register');
这可能是因为您没有在指向该控制器的用户路由上调用正确的中间件。您必须创建一个用户中间件
您可以通过导航到App\Http\Middleware并添加名为UserMiddleware.php的用户中间件和一些代码来实现这一点
首先,您需要导入以下文件
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
- 然后创建一个名为<代码>类用户中间件
if (Auth::user()->usertype == 'user')
{
return $next($request);
}
'user' => \App\Http\Middleware\UserMiddleware::class,
然后转到路由(API),并将此预定义的用户中间件包含到URL中
Route::group(['middleware' => 'user'], function () {
Route::post('login', 'API\UserController@login');
Route::post('register', 'API\UserController@register');
Route::post('details', 'API\UserController@details');
});
}))
要使其工作,您需要在用户表中有一个默认设置为user
的usertype
字段。您的usertype列应该如下所示
$table->string('usertype')->nullable()->default('user');
1。复制控制器的现有功能并将其删除 2。重新创建控制器,但这次在控制器目录中指定要放置它的位置。e、 g php artisan make:YourSubfolder的控制器名称\YourControllersName
3。粘贴您的函数。请注意,在您提供的代码中,路由指向“App\Http\Controllers\API\UserController”,但您的控制器定义在“App\Http\Controllers”命名空间中:-)