自定义laravel登录认证

laravel为我们提供了登录模块,但开发过程中难免遇到前后端不通登录页面、不通用户表的情况,这时我们将要自己再写一个登录的controller

在这我们先看一下原来的登录模块是怎么登录的
vendor\laravel\framework\src\Illuminate\Routing\Router.php
在这里插入图片描述
不难看出路由将get与post请求分别发给了LoginController中的showLoginForm、login两个方法处理,
打开LoginController,发现里面并没有showLoginForm、login两个方法,但使用一个trait —AuthenticatesUsers
打开AuthenticatesUsers,很快就能找到showLoginForm,login
在这里插入图片描述
在这里插入图片描述
因此,我们在写自己的登录时,通过use AuthenticatesUsers即可。
正式开始:
1、创建我们自己的登录控制器

php artisan make:controller Backend\LoginController

此时在Backend目录下创建了一个LoginController控制器

<?php

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
//引入trait
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Auth;
class LoginController extends Controller
{
//使用trait
    use AuthenticatesUsers;
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
    //
        $this->middleware('guest.manager')->except('logout');
    }
    
//    修改验证的用户,默认的是邮箱,你懂的,我这里改成了电话tel,注意自己用啥就改成啥
    public function username()
    {
        return 'tel';
    }
    
//    修改showLoginForm返回的页面(自己的登录页面,我的登录页面在view\backend\auth\login.blade.php)
    public function showLoginForm()
    {
        return view('backend.auth.login');
    }
    
//    修改guard,这里请结合文档验证“自定义 Guard”来看,介绍的很清楚
    protected function guard()
    {
        return Auth::guard('manager');
    }
    
//    默认的登录页面是home,这里修改为我们自己的路由
    protected function redirectTo()
    {
        return '/test';
    }
}

自定义 Guard
在 config/auth.php 中添加在的guard
在这里插入图片描述
我的
添加了一个providers,名字叫manager,这个manager provider用的驱动是eloquent,对应的模型是Manager,模型所在名称空间是 App\Model

 'manager' => [
            'driver' => 'eloquent',
            'model' => App\Model\Manager::class,
        ],

添加完成如下


'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        //
        'manager' => [
            'driver' => 'eloquent',
            'model' => App\Model\Manager::class,
        ],
//想用database就按下面这种写法写
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

我添加了一个guard 名字叫manager,这里名字随便取也可以叫abc

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        //自己添加的guards,名称为manager,也可以叫abc,随你,这个名称在哪用到呢?下面讲
        'manager' => [//如果你填的是abc,loginController中就填abc
            'driver' => 'session',
            'provider' => 'manager',//这里要与上面providers中添加的名称一致
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

guard名称就在我们自己写的loginController中这里用到

protected function guard()
{
    return Auth::guard('manager');//如果你取名是abc,这里就填abc,不填默认为web
}

接下来我们要创建一下我们的用户表与用户表对应的模型
表我们就直接复制users表了,改成自己的命名称manager,
创建模型Manager

php artisan make:model Model\Manager
<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
//在用户模型中需要修改一下继承关系,文档中写的,要深究自己去研究
use Illuminate\Foundation\Auth\User;
//原来是继承Model,改成继承User
class Manager extends User
{
    //天机按对应关系
    protected $table='manager';
    //将黑名单设置为空
    protected $guarded=[];
    //设置主键
    protected $primaryKey='id';
    //这里根据自己的需要修改,自动维护时间戳true或false
    public $timestamps=true;
}

最后
路由,自己的写在哪就自己改改位置

//访问登录页面
Route::get('manager','Backend\LoginController@showLoginForm');

//处理登录请求
Route::post('manager','Backend\LoginController@login');

//自己随便加的登录成功跳转路由,改成你自己的home页
Route::get('/test',function (){
    return "1111";
});

你也可以在B站上看视频
B站视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值