Laravel Guard

Laravel Guard

Guard我的理解他应该是一个类似用户认证的东西。

config/auth.php 中有配置 guards 的参数,可以看出来 webapi 是两个 guards
在平时的业务中api可能更多的是用户前台用户的操作,而web更多的是后台用户的操作。
默认配置都是指向 usersprovider

 

/*
    | Authentication Guards
    |认证关卡
    | Next, you may define every authentication guard for your application. Of course, a great default configuration has been defined for you here which uses session storage and the Eloquent user provider.
    |接下来,你可能要为你的应用定义每个认证关卡。当然,已经为你定一了一个很不错的默认配置。这里会使用会话储存和用户模型
    | All authentication drivers have a user provider. This defines how the users are actually retrieved out of your database or other storage mechanisms used by this application to persist your user's data.
    |所有的认证驱动都有一个用户提供者。这里定义了怎么实际上怎么从你的数据库或者其他储存机制中取出用户。以便应用开保持你的用户数据
    | Supported: "session", "token"
    |可选驱动:"session", "token"
    */
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

接下来看看 provider 都有什么配置。

 

  /*
    | User Providers
    |用户提供者
    | If you have multiple user tables or models you may configure multiple sources which represent each model / table. These sources may then be assigned to any extra authentication guards you have defined.
    | 如果你有多个用户表或用户模型,你可以配置多个代表用户表或模型的资源。这些资源可能被分配给应用中你定义的其他认证关卡
    | Supported: "database", "eloquent"
    |
    */
 'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

providers 中有刚才看到的 users 配置了吧,这个就是配置laravel的用户组,因为前台和后台用户在一般的情况下是分开操作的。所以就可以在这里新建一个 admin 的用户组,并配置。开箱默认只用 users

相对的每个用户组密码操作应该也是不同的,所以这里还有 password 的配置。

 

  /*
    | Resetting Passwords
    | 密码重置
    | You may specify multiple password reset configurations if you have more than one user table or model in the application and you want to have separate password reset settings based on the specific user types.
    | 如果你有多个用户模型或表,并且想对不同用户类型有特定的密码重置,则可以配置多个特定的重置密码
    | The expire time is the number of minutes that the reset token should be considered valid. This security feature keeps tokens short-lived so they have less time to be guessed. You may change this as needed.
    |这个获取时间是令牌过期的分钟数,这个安全措施可以保证令牌保持段时间有效,因此有更少的时间被破解。你可以按照需要更改。
    */

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

平时用于检测登陆用户,或者用户是否登陆我们都用的是 Auth::check() 就可以检测到,这是因为在使用默认配置的时候,guard自动配置为 users 用户组。

 

  /*
    | Authentication Defaults
    | 默认认证配置
    | This option controls the default authentication "guard" and password reset options for your application. You may change these defaults as required, but they're a perfect start for most applications.
    | 这个就是应用的默认认证关卡个重置密码,你可以按自己要求更改。但这是最适合一个新应用的配置
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

web guard下指向的就是 users 模型。
但是当如果我们有两个用户组,前台后台的时候怎么进行验证呢?

Auth::check() 是判断用户是否登录的方法,如果使用的默认用户系统,那这样使用没问题。

但是使用两组用户的话,就应该这样操作:
Auth::guard('api')->check() 就是用来判断前台用户是否登录 Auth::guard('web')->check() 就是用来判断后台用户是否登录

所以如果使用非默认用户组,则需要用guard来指定。

所以我们平时用的其实就是默认配置,写全就应该是 Auth::guard(‘web)->check()



作者:禹声
链接:https://www.jianshu.com/p/c6bde998b87b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel提供了一个方便易用的Auth系统,可以用于用户认证和授权。下面是一个简单的例子,演示如何在Laravel中使用Auth系统进行用户认证: 1. 创建一个用户模型 在Laravel中,可以使用Artisan命令行工具快速生成用户模型。在命令行中运行以下命令: ``` php artisan make:model User -m ``` 这个命令将在app目录下创建一个User.php文件,同时在数据库中创建一个users表格。我们可以在User模型中定义表格名称和字段: ```php use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { protected $table = 'users'; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; } ``` 2. 创建认证控制器 在Laravel中,可以使用Artisan命令行工具快速生成控制器。在命令行中运行以下命令: ``` php artisan make:controller AuthController ``` 这个命令将在app/Http/Controllers目录下创建一个AuthController.php文件。我们可以在这个控制器中定义登录和注册方法: ```php use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class AuthController extends Controller { public function showLoginForm() { return view('auth.login'); } public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { return redirect()->intended('dashboard'); } return redirect('login')->withErrors([ 'email' => 'These credentials do not match our records.', ]); } public function logout() { Auth::logout(); return redirect('login'); } } ``` 在上面的代码中,showLoginForm方法用于显示登录表格。login方法用于处理登录请求,如果验证成功则将用户重定向到dashboard页面。logout方法用于注销用户。 3. 创建路由 在Laravel中,可以使用路由来定义URL和控制器方法之间的映射关系。在routes/web.php文件中添加以下路由: ```php Route::get('login', 'AuthController@showLoginForm')->name('login'); Route::post('login', 'AuthController@login'); Route::post('logout', 'AuthController@logout')->name('logout'); ``` 这些路由定义了/login,/logout和/dashboard这些URL,并将它们映射到AuthController控制器中的相应方法。 4. 创建登录表格 在Laravel中,可以使用Blade模板引擎来创建HTML页面。在resources/views/auth/login.blade.php文件中创建一个登录表格: ```php <form method="POST" action="{{ route('login') }}"> @csrf <div> <label for="email">Email</label> <input id="email" type="email" name="email" value="{{ old('email') }}" required autofocus> @error('email') {{ $message }} @enderror </div> <div> <label for="password">Password</label> <input id="password" type="password" name="password" required> @error('password') {{ $message }} @enderror </div> <div> <button type="submit">Login</button> </div> </form> ``` 在上面的代码中,我们使用Blade模板引擎创建了一个登录表格。@csrf指令用于生成一个随机的CSRF令牌,用于防止跨站请求伪造攻击。@error指令用于显示用户认证失败时的错误消息。 5. 配置认证系统 在Laravel中,可以使用config/auth.php文件来配置认证系统。可以在这个文件中配置用户模型、认证驱动、密码重置选项等等。以下是一个示例配置: ```php return [ 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', 'hash' => false, ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ], ]; ``` 在上面的配置中,我们指定了默认的Guard和Password Reset选项,并配置了Web Guard和API Guard。我们还指定了User Provider和Password Reset Provider。 以上就是在Laravel中使用Auth系统进行用户认证的简单例子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值