Auth::check() 是判断用户是否登录的方法,如果使用的默认用户系统,那这样使用没问题。
但是使用两组用户的话,如何使用各组用户的功能呢? Auth::guard('users')->check() 就是用来判断前台用户是否登录,而 Auth::guard('admins')->check() 就是用来判断后台用户是否登录的。
默认的User model扩展自 IlluminateFoundationAuthUser
class User extends Model implements
AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;
}
use的trait实现了AuthorizableContract这些接口,所以不用自己写代码,就实现了接口。
middleware('guest:client')
应该是
通过冒号 : 来隔开中间件与参数
其实是
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
看其定义发现有个参数$guard, 应该传的是我们定义的guard
$this->middleware('guest')->except('logout');
其中这个except表示logout这个方法将不会受到这个中间件的影响 logout通常是登出方法
今天学习了多用户表登录:
Auth Facades里面有
public static function routes()
{
static::$app->make('router')->auth();
}
public function auth()
{
// Authentication Routes...
$this->get('login', 'AuthLoginController@showLoginForm')->name('login');
$this->post('login', 'AuthLoginController@login');
$this->post('logout', 'AuthLoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'AuthRegisterController@showRegistrationForm')->name('register');
$this->post('register', 'AuthRegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'AuthForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'AuthForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'AuthResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'AuthResetPasswordController@reset');
}
protected function guard()
{
return Auth::guard();
}
复制 layouts 下面的 app.blade.php,改名为 admin.blade.php 并对该文件做出修改
Auth::guest() 改为 Auth::guard('admin')->guest()
Auth::user()->name ->Auth::guard('client')->user()->name
假设你的密码为123456,那么你保存在数据库中的值就是
password_hash('123456','PASSWORD_BCRYPT')