feignclient 多个name_如何在Laravel 5.6中设置多个身份验证

·点击蓝字563e975642e27ff79625e3971762021c.png关注我们!每天获取最新的编程小知识!

002f0ed481fef8b3312e534b0c62e0ad.gif

源 / php中文网      源 / www.php.cn

在本文中,我们将介绍Laravel 5.6中的多个身份验证。这里的多个身份验证只是针对多个用户模型进行身份验证的过程。

8a25ba82082db776668562454a0252bf.png

(查看原文请点击本文末尾左下角:

在以下部分中,我们将演示Laravel的内置身份验证功能。更具体地说,我将向您展示如何验证管理员用户和普通用户。

第1步:Laravel设置

使用composer设置Laravel项目。

composer create-project --prefer-dist laravel/laravel project-name

第2步:数据库配置

打开.env文件并在文件中设置数据库凭据。

DB_DATABASE= database-name

DB_USERNAME= root

DB_PASSWORD= database-password

第3步:身份验证

要使用Laravel的内置身份验证系统进行注册和登录,只需运行以下命令:

php artisan make:auth

第4步:设置模型和迁移

为管理员Admin创建和设置模型和迁移:

php artisan make:model Admin -m

要为Admin设置模型,请转到app / Admin.php并使用以下代码更新代码:

/**

 * Remove 'use Illuminate\Database\Eloquent\Model;'

 */

use Illuminate\Notifications\Notifiable;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable

{

    use Notifiable;

// The authentication guard for admin

    protected $guard = 'admin';

     /**

      * The attributes that are mass assignable.

      *

      * @var array

      */

    protected $fillable = [

        'email', 'password',

    ];

     /**

      * The attributes that should be hidden for arrays.

      *

      * @var array

      */

    protected $hidden = [

        'password', 'remember_token',

    ];

要为Admin设置迁移表,请转到database / migration / *** _ create_admins_table.php并使用以下代码更新代码:

//

{

    Schema::create('admins', function (Blueprint $table) {

            $table->increments('id');

            $table->string('email')->unique();

            $table->string('password');

            $table->rememberToken();

            $table->timestamps();

    });

 }

//

第5步:设置管理员控制器

要为Admin创建控制器,请运行以下命令:

php artisan make:controller AdminController

要设置控制器,请转到app / Http / Controllers / AdminController.php并使用以下代码更新代码:

class AdminController extends Controller{    /**

     * Create a new controller instance.

     *

     * @return void

     */

    public function __construct()

    {        $this->middleware('auth:admin');

    }

    /**

     * Show the application dashboard.

     *

     * @return \Illuminate\Http\Response

     */

    public function index()

    {        return view('admin');

    }}

第6步:为管理员用户设置登录控制器

要创建Login控制器,请运行以下命令:

php artisan make:controller Auth/AdminLoginController

要设置登录控制器,请转到app / Http / Controllers / Auth / AdminLoginController.php并使用以下代码更新代码:

use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\AuthenticatesUsers;use Illuminate\Support\Facades\Auth;class AdminLoginController extends Controller{    /**

     * Show the application’s login form.

     *

     * @return \Illuminate\Http\Response

     */

    public function showLoginForm()

    {        return view(’auth.admin-login’);

    }

    protected function guard(){        return Auth::guard('admin');

    }

    use AuthenticatesUsers;    /**

     * Where to redirect users after login.

     *

     * @var string

     */

    protected $redirectTo = '/admin/dashboard';    /**

     * Create a new controller instance.

     *

     * @return void

     */

    public function __construct()

    {        $this->middleware('guest:admin')->except('logout');

    }}

第7步:为普通用户设置登录控制器

要为普通用户设置登录控制器,请转到app / Http / Controllers / Auth / LoginController.php并使用以下代码更新代码:

///**

 * Show the application's login form.

 *

 * @return \Illuminate\Http\Response

 */public function showLoginForm(){    return view('auth.login');}//

第8步:为管理员设置登录视图

要为Admin创建和设置登录视图,请转到resources / views / auth /并创建一个新文件admin-login.blade.php。复制resources / views / auth / login.blade.php中的代码并粘贴到新文件中。

现在使用以下内容更新新文件:

//

class="card-header">{{ __('Admin Login') }}

class="card-body">

  "POST" action="{{ route('admin.login.submit') }}">

//

第9步:设置管理员的主视图

要为Admin创建和设置主视图,请转到resources / views /并创建一个新文件admin-home.blade.php。复制resources / views / home.blade.php中的代码并粘贴到新文件中。

现在使用以下内容更新新文件:

//

class="card">

   

class="card-header">Admin Dashboard

//

第10步:设置Web应用程序路由

要为您的应用程序设置Web路由,请转至routes / web.php并使用以下代码更新代码:

//

Route::get('/', function () {

    return view('layouts.app');

});

Route::prefix('admin')->group(function() {

    Route::get('/login', 'Auth\AdminLoginController@showLoginForm')->name('admin.login');

    Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');

    Route::get('/home', 'AdminController@index')->name('admin.home');

});

//

第11步:设置异常处理程序

要设置异常处理程序,请转到app / Exceptions / Handler.php并使用以下代码更新代码:

//

use Illuminate\Auth\AuthenticationException;

//

//

protected $dontReport = [

     \Illuminate\Auth\AuthenticationException::class,

     \Illuminate\Auth\Access\AuthorizationException::class,

     \Symfony\Component\HttpKernel\Exception\HttpException::class,

     \Illuminate\Database\Eloquent\ModelNotFoundException::class,

     \Illuminate\Session\TokenMismatchException::class,

     \Illuminate\Validation\ValidationException::class,

];

//

//

public function render($request, Exception $exception)

{

    return parent::render($request, $exception);

}

    /**

     * Convert an authentication exception into an unauthenticated response.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Illuminate\Auth\AuthenticationException  $exception

     * @return \Illuminate\Http\Response

     */

 protected function unauthenticated($request, AuthenticationException $exception)

 {

    if ($request->expectsJson()) {

     return response()->json(['error' => 'Unauthenticated.'],401);

    }

     $guard = array_get($exception->guards(), 0);

      switch ($guard) {

        case 'admin': $login = 'admin.login';

        break;

        default: $login = 'login';

        break;

      }

        return redirect()->guest(route($login));

  }

第12步:设置重定向中间件

要在身份验证后设置重定向中间件,请转到app / Http / Middleware / RedirectIfAuthenticated.php并使用以下代码更新代码:

//

public function handle($request, Closure $next, $guard = null)

{

        switch ($guard) {

            case 'admin' :

                if (Auth::guard($guard)->check()) {

                    return redirect()->route('admin.home');

                }

                break;

            default:

                if (Auth::guard($guard)->check()) {

                    return redirect()->route('home');

                }

                break;

        }

     return $next($request);

}

//

第13步:设置身份验证配置

要设置身份验证配置,请转至config / auth.php并使用以下代码更新代码:

//

'defaults' => [

        'guard' => 'web',

        'passwords' => 'users',

    ],

'admins' => [

        'driver' => 'eloquent',

        'model' => App\Admin::class,

    ],

//

//

'guards' => [

        'web' => [

            'driver' => 'session',

            'provider' => 'users',

        ],

        'api' => [

            'driver' => 'token',

            'provider' => 'users',

        ],

        'admin' => [

            'driver' => 'session',

            'provider' => 'admins',

        ],

        'admin-api' => [

            'driver' => 'token',

            'provider' => 'admins',

        ],

    ],

//

//

'providers' => [

        'users' => [

            'driver' => 'eloquent',

            'model' => App\User::class,

        ],

       'admins' => [

            'driver' => 'eloquent',

            'model' => App\Admin::class,

        ],

    ],

//

//

'passwords' => [

        'users' => [

            'provider' => 'users',

            'table' => 'password_resets',

            'expire' => 60,

        ],

        'admins' => [

            'provider' => 'admins',

            'table' => 'password_resets',

            'expire' => 15,

        ],

    ],

第14步:设置数据库迁移默认字符串Lenth

要设置数据库迁移的默认字符串长度,请转到app / Providers / AppServiceProvider.php并使用以下代码更新代码:

use Illuminate\Support\ServiceProvider;

use Illuminate\Support\Facades\Schema;

//

public function boot(){

    Schema::defaultStringLength(191);

}

第15步:运行迁移

要运行迁移,请输入以下命令:

php artisan migrate

使用修补程序输入管理员登录凭据:

php artisan tinker

$admin = new App\Admin

$admin->email = 'admin@app.com'

$admin->password = Hash::make(’admin-password’)

$admin->save()

希望您现在可以在Laravel项目中轻松设置多个身份验证。

da9e0ceec7496e537a8e29d8a1103724.gif

-END-

声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!

5ea5b7f7544bf20a34d99aadd82f1781.png399e185ec4ef7011059bd2f667ceb96e.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值