Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
laravel中的多重认证系统_Laravel - Fatal编程技术网

laravel中的多重认证系统

laravel中的多重认证系统,laravel,Laravel,我在laravel创建多重身份验证系统,我为每个实体创建了两个sperate表,一切正常,但注册后我只面临一个问题,使用web guard的用户可以自动登录并重定向到用户仪表板,这很完美,但如果其他用户使用不同的guard,当他们完成注册过程后,他们无法自动登录系统 因此,我的问题是,一旦其他用户类型完成注册步骤,如何启用自动登录过程?下面是我在项目中使用的代码 路由文件 SellerLoginController SellerRegisterController 默认情况下,Laravel A

我在laravel创建多重身份验证系统,我为每个实体创建了两个sperate表,一切正常,但注册后我只面临一个问题,使用web guard的用户可以自动登录并重定向到用户仪表板,这很完美,但如果其他用户使用不同的guard,当他们完成注册过程后,他们无法自动登录系统

因此,我的问题是,一旦其他用户类型完成注册步骤,如何启用自动登录过程?下面是我在项目中使用的代码

路由文件

SellerLoginController

SellerRegisterController


默认情况下,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');
});