当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel 5.2中创建多身份验证

卫兴邦
2023-03-14

我做了多次授权,但我有最终代码的问题。我有这样的代码

php artisan make:auth

它将为用户表生成基本的登录/注册路由、视图和控制器。

为了简单起见,将管理表作为用户表。

管理员应用的控制器/Http/Controllers/AdminAuth/AuthController-app/Http/Controllers/AdminAuth/PasswordController(注意:我刚刚从app/Http/Controllers/Auth/AuthController这里复制了这些文件)

config/auth.php

//Authenticating guards
'guards' => [
    'user' =>[
        'driver' => 'session',
        'provider' => 'user',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admin',
    ],
],  

//User Providers
'providers' => [
    'user' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admin' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ]
],  

//Resetting Password  
'passwords' => [
    'clients' => [
        'provider' => 'client',
        'email' => 'auth.emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
    'admins' => [
        'provider' => 'admin',
        'email' => 'auth.emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
],  

route.php

Route::group(['middleware' => ['web']], function () {
    //Login Routes...
    Route::get('/admin/login','AdminAuth\AuthController@showLoginForm');
    Route::post('/admin/login','AdminAuth\AuthController@login');
    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', 'AdminController@index');

});  

AdminAuth/AuthController.php

添加两个方法并指定$reDirectTo和$Guard

protected $redirectTo = '/admin';
protected $guard = 'admin';
public function showLoginForm()
{
    if (view()->exists('auth.authenticate')) {
        return view('auth.authenticate');
    }

    return view('admin.auth.login');
}
public function showRegistrationForm()
{
    return view('admin.auth.register');
}

它将帮助您打开另一个管理员登录表单

为管理员创建中间件

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('/');
    }

    return $next($request);
}
}

在kernel.php中注册中间件

 protected $routeMiddleware = [
    'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
];
use this middleware in AdminController e.g.,
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class AdminController extends Controller
{
    public function __construct(){
        $this->middleware('admin');
   }
public function index(){
        return view('admin.dashboard');
    }
}

这段代码是什么意思-

共有1个答案

施海
2023-03-14

这个代码是什么意思Auth::警卫('admin')-

简而言之,Auth::警卫('admin')-

我必须在哪里输入代码?

从回答中,你可以明白你必须在哪里使用它。但是我仍然可以用例子来解释。假设有多个管理员。每个都可以批准用户的请求(如帖子/评论等)。因此,当管理员批准任何请求时,然后要将该管理员的id插入approved_bypost列中,您必须使用这一行。

 类似资料:
  • 问题内容: 在我的Java EE6 REST服务上,我想使用身份验证令牌从移动设备登录,用户将发送其用户名,密码,服务器将发回令牌,该令牌将用于授权用户对给定的进一步请求时间。 我可以这样简单地自己创建令牌吗?(我想我不需要加密此令牌,因为我将使用HTTPS。) 还是有一种更标准的方式来创建我的令牌?也许它存在于API之一 问题答案: 您有效地提出的方案允许客户端无限制地访问您的服务。初始登录后,

  • 使用使用corda-webserver的webapp,如何实现用户的身份验证机制? 配置文件中提到的RPC用户。 并执行基于角色的操作(仅限可访问的流)。 我只能找到有关通过ClientRPCOps对RPC用户进行身份验证的详细信息,但找不到任何关于基于web的身份验证的信息。

  • 问题内容: 有谁知道如何在laravel 5.2中使用多重身份验证! 我想使用它,但我不知道如何? 没有人有教程或项目设置多重身份验证吗? 问题答案: 您需要两个表,并 在命令后运行Run命令以创建内置身份验证 两种模型:Users(已存在)和Admin 现在打开config / auth.php并进行以下更改 创建一个新的中间件 Kernel.php中的更改 创建一个新文件夹Http / Con

  • 我已经使用active directory登录,在验证active directory中的用户名和密码是否正确后,我想在passport中创建access。但是如果没有在中验证,我就无法创建令牌。 我从活动目录验证后尝试此代码 错误: 调用未定义的函数App\Http\Controllers\API\createToken() 如何在passport中创建访问令牌而不使用?

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

  • 我正在尝试用.NET中的LDAP制作一个简单的身份验证系统。我检查了.NET中的一些名称空间,并简单地制作了标准代码片段,如下所示。 我有一个管理员用户名和密码和,用于对客户端应用程序进行身份验证。我有第二个用户名和密码和,需要在LDAP中检查才能登录。 是管理帐户,只是LDAP中的用户。那么如何检查的密码呢?