laravel中的多重认证系统
我在laravel创建多重身份验证系统,我为每个实体创建了两个sperate表,一切正常,但注册后我只面临一个问题,使用web guard的用户可以自动登录并重定向到用户仪表板,这很完美,但如果其他用户使用不同的guard,当他们完成注册过程后,他们无法自动登录系统 因此,我的问题是,一旦其他用户类型完成注册步骤,如何启用自动登录过程?下面是我在项目中使用的代码 路由文件 SellerLoginController SellerRegisterControllerlaravel中的多重认证系统,laravel,Laravel,我在laravel创建多重身份验证系统,我为每个实体创建了两个sperate表,一切正常,但注册后我只面临一个问题,使用web guard的用户可以自动登录并重定向到用户仪表板,这很完美,但如果其他用户使用不同的guard,当他们完成注册过程后,他们无法自动登录系统 因此,我的问题是,一旦其他用户类型完成注册步骤,如何启用自动登录过程?下面是我在项目中使用的代码 路由文件 SellerLoginController SellerRegisterController 默认情况下,Laravel A
默认情况下,Laravel Auth将用户表作为主数据。若要进行多重身份验证,首先需要创建一个具有“应报告特性”的模型 模型 之后,需要在config/auth.php中创建保护和提供程序 这个例子是这样的
<?php
[...]
'guards' => [
[...]
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'writer' => [
'driver' => 'session',
'provider' => 'writers',
],
],
[...]
在登录控制器中,您需要通过执行以下命令来检查哪个卫兵正在尝试登录
Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->get('remember'))
如果您需要有关它的更多详细信息,请尝试阅读此发生这种情况是因为您没有在SellerRegisterController上定义guard方法,并且默认实现检索默认驱动程序,即web 该保护方法为RegisterUsers的register方法中的自动登录过程提供保护: $this->guard->login$user; 您必须重写SellerRegisterController类中的guard方法以返回正确的驱动程序,并允许trait在正确的驱动程序上执行登录过程: /** *在注册期间使用防护装置。 * *@return\light\Contracts\Auth\StatefulGuard */ 保护功能保护 { return Auth::guard'sellers'; }
您应该发布您的身份验证提供商配置和中间件以及“卫士”=>[“web”=>[“驱动程序”=>“会话”,“提供商”=>“用户”,],“卖家”=>[“驱动程序”=>“会话”,“提供商”=>“卖家”,],],],“提供商”=>[“用户”=>[“驱动程序”=>“雄辩”,“模型”=>App\User::class,],“卖家”=>[“驱动程序”=>“雄辩”,“模型”=>App\Seller::class,],],是的,我使用的模式与您提到的相同,但问题是,在注册后,我面临将writer或admin重定向到仪表板页面。因此,我希望,如果有人注册为writer,那么在注册过程后的下一步,writer应该自动登录,而不是使用w手动登录riter登录页面,我不知道为什么会发生这种情况,而在默认用户表中,用户完成注册后会自动登录。
namespace App\Http\Controllers\Auth\Seller;
use App\Seller;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Auth\Events\Registered;
class SellerRegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/seller/dashboard';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:seller');
}
public function showRegistrationForm()
{
return view('auth.seller.register');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'firstname' => ['required', 'string', 'max:255'],
'lastname' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:sellers'],
'business_name' => ['required', 'string', 'max:255'],
'business_description' => ['required', 'string', 'max:255'],
'business_location' => ['required', 'string', 'max:255'],
'business_website' => ['required', 'string', 'max:255'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
$seller = Seller::create([
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
'email' => $data['email'],
'business_name' => $data['business_name'],
'business_description' => $data['business_description'],
'business_location' => $data['business_location'],
'business_website' => $data['business_website'],
'business_logo' => 'test_logo.jpg',
'password' => Hash::make($data['password']),
'user_type' => $data['user_type'],
]);
return $seller;
}
}// code end here
class Admin extends Authenticatable
{
use Notifiable;
}
<?php
[...]
'guards' => [
[...]
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'writer' => [
'driver' => 'session',
'provider' => 'writers',
],
],
[...]
[...]
'providers' => [
[...]
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'writers' => [
'driver' => 'eloquent',
'model' => App\Writer::class,
],
],
[...]
Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->get('remember'))
// Adminmiddleware
if(Auth::check() && Auth::user()->role->id == 1)
{
return $next($request);
}else {
return redirect()->route('login');
}
// Authormiddleware
if(Auth::check() && Auth::user()->role->id == 2 )
{
return $next($request);
}else {
return redirect()->route('login');
}
// Admin Route
Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){
Route::get('dashboard','DashboardController@index')->name('dashboard');
});
// Auhtor Route
Route::group(['as'=>'user.','prefix'=>'user','namespace'=>'Author','middleware'=>['auth','user']], function (){
Route::get('dashboard','DashboardController@index')->name('dashboard');
});
// only auht route
Route::group(['middleware'=>['auth']], function(){
Route::post('favorite/{post}/add','FavoriteController@add')->name('post.favorite');
Route::post('review/{id}/add','ReviewController@review')->name('review');
Route::get('file-download/{id}', 'PostController@downloadproject')->name('project.download');
Route::post('file-download/{id}', 'PostController@downloadproject');
});