在Laravel中,如何实现数据库驱动程序和提供者身份验证,而不使用优雅的方式
P粉043566314
P粉043566314 2023-08-28 09:14:37
[PHP讨论组]
<p>Laravel支持的驱动程序是&quot;<strong>database</strong>&quot;或&quot;<strong>eloquent</strong>&quot;来授权网站。 在默认的<strong>config/auth.php</strong>中,我们可以看到它总是声明驱动程序是eloquent。</p> <pre class="brush:php;toolbar:false;">``` /* |-------------------------------------------------------------------------- | User Providers |-------------------------------------------------------------------------- | | 所有身份验证驱动程序都有一个用户提供程序。这定义了如何从数据库或其他存储机制中实际检索用户的数据。 | | 如果您有多个用户表或模型,您可以配置多个代表每个模型/表的源。然后可以将这些源分配给您定义的任何额外的身份验证保护。 | | 支持的:&quot;database&quot;,&quot;eloquent&quot; | */ 'providers' =&gt; [ 'users' =&gt; [ 'driver' =&gt; 'eloquent', 'model' =&gt; App\Models\Users::class, ], // 'users' =&gt; [ // 'driver' =&gt; 'database', // 'table' =&gt; 'users', // ], ], ```</pre> <p>然后我们有一个模式<strong>User</strong>与表User关联,用于检查认证。 因此,我们可以使用一些<strong>auth</strong>的方法: <strong>auth::check(), auth::atemp(), auth:login(),...</strong> 如果我不使用Model App\Models\Users::class,而是使用<strong>'driver' => 'database'</strong>,那么我如何使用一些<strong>auth</strong>的函数进行授权呢?</p>
P粉043566314
P粉043566314

全部回复(1)
P粉781235689

只需将驱动更改为数据库,您可以轻松地注释掉eloquent部分并取消注释驱动数据库部分,您可以像以前一样正常使用auth()。 Laravel的auth功能即插即用。

'users' => [
    'driver' => 'database',
    'table' => 'users', //或者您用于用户的任何表。
]

您可以在AuthController中设计您的signIn方法,如下所示:

public function signIn(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required'
        ]);

        $credentials = $request->only('email', 'password');

        if (Auth::attempt($credentials)) {
            return redirect('/');
        }

        return redirect('login')->withErrors('登录详细信息无效');
    }

它将在eloquent和数据库驱动程序中都起作用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号