门面位置:
config/auth.php
Auth 文件中的三个键(defaults、guards、providers):
//指定默认的守门员,如果自定义则无需修改:
'defaults' => [ ],
//指定每个guard的提供者信息和信息存储的驱动方式:
'guards' => [ ],
//定义每个guard实例的验证数据来源,一般为eloquent模型:
'providers' => [ ],
编写 Auth 文件:
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin', //与providers里的键对应
],
],
'providers' => [
'admin' => [
'driver' => 'eloquent',
'model' => App\Model\Admin\Manager::class, //规定模型类
],
]
在 Eloquent 模型中使用:
use Illuminate\Auth\Authenticatable; //引入trait
class Manager extends Model implements \Illuminate\Contracts\Auth\Authenticatable
{
protected $table = 'manager';
use Authenticatable; //使用trait
}
引用的文件地址:
vendor\laravel\framework\src\Illuminate\Auth\Authenticatable.php
vendor\laravel\framework\src\Illuminate\Contracts\Auth\Authenticatable.php
引入 Auth 门面:
use Illuminate\Support\Facades\Auth;
在控制器中引用:
//返回值为true或false,attemp实现记住我功能
$result = Auth::guard('admin')->attempt($data,$request->get('online'));
获取认证用户:
//在blade视图中引用,username为对应字段
{{Auth::guard('admin')->user()->username}}
退出登陆清除缓存:
Auth::guard('admin')->logout();
中间件路由保护:
中间件底层代码:
//app\Exception\Handler.php
protected function unauthenticated($request, AuthenticationException $exception){
return $request->expectsJson() ?
response()->json(['message' => $exception->getMessage()], 401) :
redirect()->guest(route('login')); //默认重定向路由地址
}
路由文件:
Route::view('login','admin.public.login')->name('login');
Route::view('index','admin.index.index')->middleware('auth:admin');