我正在尝试分别对用户和管理员表单user
table和admin
table进行身份验证。我正在使用laravel提供的“开箱即用”的User
模型,并为Admin创建了相同的模型。
我在auth.php中添加了一个保护密钥和提供者密钥。
卫兵
'guards' => [
'user' =>[
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
提供者
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
路线
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');
});
我创建了一个名为AuthAdmin
的目录,其中存在Laravel的默认AuthController.php
和PasswordController.php
文件。(名称空间相应修改)
Laravel的文档中提到的另一种方法是使用一个不起作用的防护装置。
如果有人能解决问题,如果我错了,纠正我,那将是有益的。
这在拉威尔5.6中非常简单。只需转到config/auth.php
并将此行添加到providers
数组中:
'admins' => [
'driver' => 'database',
'table' => 'admin_table'
]
请注意,我们使用数据库
作为驱动程序,而不是雄辩的
。
现在将其添加到guards
array:
'admin_guard' => [
'driver' => 'session',
'provider' => 'admins'
]
现在我们完成了!使用admins表时使用此选项:
Auth::guard('admin_guard')->User();
干杯
如果这对任何人都有帮助,这可能是因为我对中间件缺乏了解,下面是我必须做的事情来让它工作(除了@imrealashu采取的步骤)。。。
在route.php
中:
Route::get('/admin', [
'middleware' => 'admin',
'uses' => 'AdminController@index'
]);
这在web
中间件组中。在此之前,我尝试将它放在一个单独的admin
中间件组中,甚至放在一个auth: admin
组中,但这并不起作用,只有当我在路由本身中将中间件指定为admin时,它才对我起作用。我不知道这是为什么,但我希望这能避免其他人像我一样拔掉头发。
经过大量的挖掘和大量的问题
如何在Laravel 5.2中实现多重身份验证
如上所述。两个表admin
和user
Laravel 5.2有一个新的artisan
命令。
php artisan make: auth
它将为用户
表生成基本登录/注册路由
、视图
和控制器
。
为了简单起见,将一个admin
表作为user
表。
Controller For Adminapp/Http/Controller/AdminAuth/AuthController
app/Http/Controller/AdminAuth/PasswordController
(注意:我只是从这里复制了这些文件)
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');
}
它将帮助您打开另一个管理员登录表单
为admin
创建中间件
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,
];
在
AdminController
中使用此中间件,例如。,
个人身份验证 (PIV) Yubikey 支持个人身份验证 (PIV 和 FIPS 201) 智能卡接口 (NIST SP 800-73)。根据智能卡上存储的私钥,通过 PKCS#11 一类的通用接口进行RSA 或者 ESS 的签名、加密、解密操作。
问题内容: 我有一个主要的领域:,子:,和其他领域,。 现在完成如下操作: login.php 在每个页面上添加: logout.php 但它仅适用于域及其子域,。 我需要以某种方式保存会话和其他域,。 如何最好地进行安全身份验证,如果有解决方案,我真的很困惑,请举例说明。 问题答案: 据我所知,跨子域之间的会话很好,但不会延续到整个新域。为此,您需要某种集中式数据方法或API。 数据库方法: 您
问题内容: 越来越多地使用Python,并且不断看到在不同文件中设置的变量。有人可以解释这是什么吗? 问题答案: 这是该模块的公共对象的列表,由解释import 。它覆盖了默认的内容,即隐藏以下划线开头的所有内容。
null 原因:javax.net.ssl.sslhandShakeException:在java.base/sun.security.ssl.alert.createsslException(Alert.java:128)在java.base/sun.security.ssl.alert.createsslException(Alert.java:117)在java.base/sun.secur
身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工
我试图为AWS实现“开发人员身份验证身份”,如下所示:https://AWS.amazon.com/blogs/mobile/amazon-cognito-innecling-developer-authenticated-identities/ 我很好地理解了基本流程。 我怎样才能做到这一点?