不好意思,刚才解决了问题,还是复制了下。
手动认证实在搞不懂。
为了怕别的同学也会掉坑,分享下。
1.登陆控制器部分
namespace App\Http\Controllers\Admin;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends BeforeController
{// 这里的Before别管 是自己添加的 公共控制器,暂时是个空的,是用 ThinkPHP 的习惯
use AuthenticatesUsers;
protected $redirectTo = 'admin';// 登陆后跳转
public function login()
{
return view('admin.login');
}
protected function guard()
{
return auth()->guard('admin');// 使用新添加的Guard
}
public function username()
{
return 'username';// 检测的用户名字段,数据库里用户名字段为uid 那么这里改下uid就行
}
}
2.Kernel里 添加
'auth.admin' => \App\Http\Middleware\AuthAdmin::class,
3.添加 Middleware
namespace App\Http\Middleware;
use Closure;
class AuthAdmin
{
public function handle($request, Closure $next)
{
if (auth()->guard('admin')->guest()) {// 刚才添加的Guard的名字
return redirect()->guest('admin/login');// 没有登陆直接跳转登陆页面
}
return $next($request);
}
}
4.路由添加
Route::get('admin/login','Admin\LoginController@show');
Route::post('admin/login','Admin\LoginController@login');
Route::group(['prefix' => 'admin','middleware' => 'auth.admin'],function(){
Route::get('/',function(){
$aa = \Illuminate\Support\Facades\Auth::guard('admin')->user();
return dd($aa);
});
});
忘了写Guard部分了,下面是Guard部分
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [// 新添加
'driver' => 'session',
'provider' => 'admins',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [// 新添加
'driver' => 'eloquent',
'model' => App\Http\Models\Admins::class,
],
],