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