我正在阅读laravel网站https://laravel.com/docs/5.2/authentication
中的身份验证部分任何人都可以解释我是如何做到这一点的,就像文档解释的那样,指定单独的表进行身份验证......我将从laravel引用如下:
访问特定防护实例
您可以指定要使用的防护实例 Auth 外观上的后卫方法。这允许您管理 使用完全认证您的应用程序的单独部分 单独的可验证模型或用户表。
传递给后卫方法的后卫名称应该对应于其中一个 在 auth.php 配置文件中配置的防护:
if (Auth::guard('admin')->attempt($credentials)) {
//
}
答案 0 :(得分:3)
您必须阅读添加自定义警卫和提供程序的示例,主要是配置部分。您可以使用相同的身份验证驱动程序,只是想调整Auth用户提供程序使用的模型。
config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
// add another one
// use the same driver, 'session', but a different user provider
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// add a provider using Eloquent but using a different model
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
]
然后你应该能够将警卫admin
指定给Auth。只要Admin
模型实现Authenticatable,并且您在Auth上将相应的凭据传递给attempt
,您应该是好的。
答案 1 :(得分:0)
如果您有更多的中间件,并且您想要应用多个防护,我的意思是中间件,您可以在任何Middleware.php文件中执行此操作:
public function handle($request, Closure $next)
{
// if a user is Agency or Admin, let him through
if (Auth::user()->isAgency() || Auth::user()->isAdmin()) {
return $next($request);
}
// else show error page
abort(403);
}