我曾经使用 laravel 5.5 并且早于https://github.com/Hesto/multi-auth。
但是这个存储库不会为 laravel 7.0 更新
如何在 Laravel 7.0 中创建多重身份验证?
我曾经使用 laravel 5.5 并且早于https://github.com/Hesto/multi-auth。
但是这个存储库不会为 laravel 7.0 更新
如何在 Laravel 7.0 中创建多重身份验证?
如果你想使用一个包,你可以使用这个包laravel-multiauth
或者
如果您想multi-auth
根据用户表中的字段创建自定义 for.eg ,请is_admin
按照以下步骤操作:
假设你已经安装了 Laravel 并连接了数据库
Step1:is_admin
在用户表和模型中添加新行。然后运行迁移。
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->boolean('is_admin')->nullable(); // add this
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
应用程序/用户.php
protected $fillable = [
'name', 'email', 'password', 'is_admin' //add here
];
然后运行迁移
php artisan migrate
Step2:Auth
使用脚手架 创建
laravel/ui
使用以下命令安装包
composer require laravel/ui
生成授权
php artisan ui bootstrap --auth
npm install
npm run dev
Step3: 创建IsAdmin
中间件将只允许admin
访问该路由的用户
php artisan make:middleware IsAdmin
应用程序/Http/中间件/IsAdmin.php
IsAdmin
在中间件中添加这个
public function handle($request, Closure $next)
{
if(auth()->user()->is_admin == 1){
return $next($request);
}
return redirect(‘home’)->with(‘error’,"You don't have admin access.");
}
注册你的IsAdmin
中间件app/Http/Kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'is_admin' => \App\Http\Middleware\IsAdmin::class, // add this
];
Step4: 为管理员创建路由routes/web.php
Route::get('admin/home', 'HomeController@adminHome')->name('admin.home')->middleware('is_admin');
Step5:在中添加adminHome()
管理路由的方法app/Http/Controllers/HomeController.php
public function adminHome()
{
return view('adminHome');
}
Step6:更改LoginController
,当用户登录时,我们根据用户访问重定向。如果是普通用户,我们将重定向到主路由,如果是管理员用户,我们将重定向到管理员路由app/Http/Controllers/Auth/LoginController.php
public function login(Request $request)
{
$input = $request->all();
$this->validate($request, [
'email' => 'required|email',
'password' => 'required',
]);
if(auth()->attempt(array('email' => $input['email'], 'password' => $input['password'])))
{
if (auth()->user()->is_admin == 1) {
return redirect()->route('admin.home');
}else{
return redirect()->route('home');
}
}else{
return redirect()->route('login')
->with('error','Email-Address And Password Are Wrong.');
}
}