Laravel —— 多套用户登录

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Laravel —— 多套用户登录脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Laravel 自带了用户认证 Auth。有看守器和提供器来实现。

对于前后台都需要登录的系统,需要添加一套用户认证。

本文中使用 Laravel 9。

 

一、生成自带的用户认证

php artisan ui:auth

1、执行脚手架命令后生成下面的代码

  - app/Http/Controllers/Auth/   相关控制器

  - resources/views/auth/    相关页面

  - routes/web.php     路由中追加了 Auth 系列

2、对应用户表 users,

3、加上 config/auth.php 配置文件中设置的 guards、providers,即可实现登录注册、邮箱验证、修改密码等操作。

 

二、生成新用户表 members

  创建 migration,生成自定义表

 

三、修改配置文件

1、在 config/auth.php 文件中,providers 数组中添加,

        'members' => [
            'driver' => 'eloquent',
            'model' => AppModelsMember::class,
        ],

 

2、guards 数组中添加

        'front' => [
            'driver' => 'session',
            'provider' => 'members',
        ],

 

四、重写登录注册方法

底层文件再 vendor/laravel/ui/auth-backend/ 目录,

继承相应的控制器,并根据需求重写方法。

1、重写登录控制器方法

// 修改成上面自定义的看守器
    protected function guard()
    {
        return Auth::guard(‘front’);
    }

// 修改登录表单用户名
    public function username()
    {
        return 'account';
    }

// 修改实现多类型账号登录
    protected function attemptLogin(Request $request)
    {
        return collect(['mail', 'tel', 'name'])->contains(function ($value) use ($request) {
            $account = $request->get($this->username());
            $password = $request->get('password');

            return $this->guard()->attempt(
                [$value => $account, 'password' => $password], $request->filled('remember')
            );
        });
    }

2、其他控制器,按照需求重写即可。

 

五、给路由添加登录验证

 

1、新建中间件文件 

 php artisan make:middleware AuthMember// 修改文件中的 handle 方法
    public function handle(Request $request, Closure $next)
    {
        if (Auth::guard('front')->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('login');
            }
        }
        return $next($request);
    }

 

2、把新建的路由,添加在 app/Http/Kernel.php 文件中

    protected $routeMiddleware = [
        'auth' => AppHttpMiddlewareAuthenticate::class,
        ...
        ...
        
        'auth.member' => AppHttpMiddlewareAuthMember::class,
    ];

 

3、路由中添加中间件

Route::prefix('/')->middleware('auth.member')->group(function(){
    Route::get('/', [IndexController::class, 'index'])->name('home');
});

 

脚本宝典总结

以上是脚本宝典为你收集整理的Laravel —— 多套用户登录全部内容,希望文章能够帮你解决Laravel —— 多套用户登录所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: