当前位置: 首页 > 面试题库 >

如何在Laravel 5.2中使用多重身份验证

李森
2023-03-14
问题内容

有谁知道如何在laravel 5.2中使用多重身份验证!
我想使用它,但我不知道如何?
没有人有教程或项目设置多重身份验证吗?


问题答案:

您需要两个表,usersadmins 在命令后运行Run命令以创建内置身份验证

php artisan make:auth

两种模型:Users(已存在)和Admin

<?php



namespace App;



use Illuminate\Foundation\Auth\User as Authenticatable;



class Admin extends Authenticatable

{



}

现在打开config / auth.php并进行以下更改

'guards' => [

        'web' => [

            'driver' => 'session',

            'provider' => 'users',

        ],



        'admin' => [

            'driver' => 'session',

            'provider' => 'admins',

        ],

    ],



'providers' => [

        'users' => [

            'driver' => 'eloquent',

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

        ],



         'admins' => [

             'driver' => 'eloquent',

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

         ],

    ],



'passwords' => [

        'users' => [

            'provider' => 'users',

            'email' => 'auth.emails.password',

            'table' => 'password_resets',

            'expire' => 60,

        ],

        'admins' => [

            'provider' => 'admins',

            'email' => 'auth.emails.password',

            'table' => 'password_resets',

            'expire' => 60,

        ],

    ],

创建一个新的中间件 RedirectIfNotAdmin

<?php



namespace App\Http\Middleware;



use Closure;

use Illuminate\Support\Facades\Auth;



class RedirectIfNotAdmin

{

    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @param  string|null  $guard

     * @return mixed

     */

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

    {

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

            return redirect('/admin/login');

        }



        return $next($request);

    }

}

Kernel.php中的更改

protected $middleware = [

        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,

        \Illuminate\Session\Middleware\StartSession::class,

        \Illuminate\View\Middleware\ShareErrorsFromSession::class,

    ];





protected $middlewareGroups = [

        'web' => [

            \App\Http\Middleware\EncryptCookies::class,

            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,

            //\Illuminate\Session\Middleware\StartSession::class,

            //\Illuminate\View\Middleware\ShareErrorsFromSession::class,

            \App\Http\Middleware\VerifyCsrfToken::class,

        ],



        'api' => [

            'throttle:60,1',

        ],

    ];





protected $routeMiddleware = [

        'auth' => \App\Http\Middleware\Authenticate::class,

        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,

        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,

        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,

        'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,

    ];

创建一个新文件夹Http / Controller / Adminauth并从Http / Controller / Auth文件夹复制文件

打开文件Http / Controller / Adminauth / AuthController.php并进行以下更改

<?php



namespace App\Http\Controllers\Adminauth;



use App\Admin;

use Validator;

use App\Http\Controllers\Controller;

use Illuminate\Foundation\Auth\ThrottlesLogins;

use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

use Auth;



class AuthController extends Controller

{

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;



    protected $redirectTo = '/admin';

    protected $guard = 'admin';



    public function showLoginForm()

    {

        if (Auth::guard('admin')->check())

        {

            return redirect('/admin');

        }



        return view('admin.auth.login');

    }



    public function showRegistrationForm()

    {

        return view('admin.auth.register');

    }



    public function resetPassword()

    {

        return view('admin.auth.passwords.email');

    }



    public function logout(){

        Auth::guard('admin')->logout();

        return redirect('/admin/login');

    }

}

创建新文件夹Http / Controller / admin,从Http / Controller /复制该文件夹中的Controller.php文件

创建新文件Http / Controller / admin / employee.php

<?php



namespace App\Http\Controllers\admin;





use Illuminate\Http\Request;

use Illuminate\Routing\Controller;



use Auth;

use App\Admin;



class Employee extends Controller

{

    public function __construct(){

        $this->middleware('admin');

   }



    public function index(){

        return view('admin.home');

    }

}

移至资源/视图创建新的文件夹资源/视图/管理员副本

resources/views/auth, resources/views/layouts & resources/views/home.blade.php

并发布resources/views/admin并打开admin文件夹中的每个文件,并在每个路径之前添加admin,现在该路径应如下所示

@extends('admin.layouts.app')

和您的Http / routes.php看起来像

<?php

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

    return view('welcome');

});



Route::get('/admin/login','Adminauth\AuthController@showLoginForm');

Route::post('/admin/login','Adminauth\AuthController@login');

Route::get('/admin/password/reset','Adminauth\PasswordController@resetPassword');



Route::group(['middleware' => ['admin']], function () {

    //Login Routes...

    Route::get('/admin/logout','Adminauth\AuthController@logout');



    // Registration Routes...

    Route::get('admin/register', 'Adminauth\AuthController@showRegistrationForm');

    Route::post('admin/register', 'Adminauth\AuthController@register');



    Route::get('/admin', 'Admin\Employee@index');

});







Route::group(['middleware' => 'web'], function () {

    Route::auth();

    Route::get('/home', 'HomeController@index');





});

多数民众赞成在浏览器中打开您的网站,并检查并为管理员yoursiteurl / admin

请享用....



 类似资料:
  • 有人知道如何在laravel 5.2中使用多重身份验证吗<我想用,但不知道怎么用 是否有人有设置多重身份验证的教程或项目?

  • 我正在laravel中创建一个多身份验证系统,其中有两种类型的用户:管理员(由我创建)和用户(使用本地laravel身份验证系统)。 如果我以用户身份登录,当我尝试访问登录页面时,当我已经登录,它会将我重定向回仪表板,但如果我以管理员身份登录,当我再次访问管理员登录页面时,它会让我再次登录,尽管已经作为管理员登录。 以下是我的重定向身份验证类代码: 有人能解释一下发生了什么事吗?

  • 问题内容: 如何在AngularJs中使用基本身份验证?我已经在Google上搜索了,但是资源对我来说不起作用。我 非常 新AngularJS 问题答案: 假设您的html定义如下: 您可以使用以下基本身份验证将后端连接到rest api: 请注意,此代码的大部分是方法。如果不需要支持IE9及更低版本,则可以将其替换为本地JS实现- atob()和btoa():https : //develope

  • 问题内容: 我正在尝试连接到HTTPS URL,但是我需要使用客户端身份验证以及第三方软件在我的系统上放置的证书。 我丝毫不知道如何找到或使用它,我所要做的只是C#示例代码,这与我为此找到的所有Java答案都大不相同。(例如,KeyStore显然需要某种密码吗?) 这是我拥有的C#示例代码 然后,它仅遍历WS2_store_Certs CertificateCollection并一路检查它们。再进

  • 我做了多次授权,但我有最终代码的问题。我有这样的代码 它将为用户表生成基本的登录/注册路由、视图和控制器。 为了简单起见,将管理表作为用户表。 管理员应用的控制器/Http/Controllers/AdminAuth/AuthController-app/Http/Controllers/AdminAuth/PasswordController(注意:我刚刚从app/Http/Controller

  • 我想构建一个API路由,经过身份验证的用户和未经身份验证的用户都可以调用该路由,并根据用户是否经过身份验证返回数据。 我卡在使用身份验证::检查()。 控制器的功能是这样的: 我最后有两个场景: 情景1 在这种情况下,在控制器中,当我检查Auth::check()在if条件内时,无论用户是否经过身份验证,我总是得到错误条件。 方案 2 在这种情况下,在控制器中,当我检查Auth::check()时