laraveli添加一个或多个用户表,以admin为例。
部分文件内容可能需要根据实际情况修改
推荐:laravel教程
创建一个Admin模型
php artisan make:model Admin -m
编写admins表字段
Schema::create('admins', function (Blueprint $table) { $table->increments('id'); $table->string('name')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });
编辑admin模型
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; /** * @property int $id * @property \Carbon\Carbon $created_at * @property \Carbon\Carbon $updated_at */ class Admin extends Authenticatable { use Notifiable; protected $fillable = [ 'name', 'password','remember_token' ]; protected $hidden = [ 'password','remember_token' ]; }
修改auth.php配置文件
'guards' => [ ... 'admin' => [ 'driver' => 'session', 'provider' => 'admins' ] ], 'providers' => [ ... 'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ] ],
在app/Http/Controllers下创建目录Admin/Auth
在Admin目录下创建文件HomeController.php(这个文件用来测试登录成功后的跳转页面)
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class HomeController extends Controller { /** * HomeController constructor. */ public function __construct() { $this->middleware('auth:admin'); } /** * Show the application dashboard. * * @return \Illuminate\Http\Response */ public function index() { return view('admin.home'); } }
使用命令生成一个Request
php artisan make:request AdminLoginRequest
此时在app/Http/Request目录下便生成了这个文件,然后编辑这个文件
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class AdminLoginRequest extends FormRequest { /** * 确定用户是否有权发出此请求. * * @return bool */ public function authorize() { return true; } /** * 获取适用于请求的验证规则. * * @return array */ public function rules() { return [ 'name' => 'required', 'password' => ['required', 'min:6'] //密码必须,最小长度为6 ]; } }
在Admin/Auth目录下创建文件LoginController.php
<?php namespace App\Http\Controllers\Admin\Auth; use App\Http\Controllers\Controller; use App\Http\Requests\AdminLoginRequest; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { public function showLoginForm() { return view('admin.auth.login'); } public function postLogin(AdminLoginRequest $loginRequest) { $data = $loginRequest->only('name', 'password'); $result = Auth::guard('admin')->attempt($data, true); if ($result) { return redirect(route('admin.home')); } else { return redirect()->back() ->with('name', $loginRequest->get('name')) ->withErrors(['name' => '用户名或密码错误']); } } public function postLogout() { Auth::guard('admin')->logout(); return redirect(route('admin.login.show')); } }
添加路由。打开app/providers/RouteServiceProvider.php
在方法mapWebRoutes()方法后面增加一个方法
protected function mapAdminWebRoutes() { Route::middleware('web') ->prefix('admin') ->namespace($this->namespace) ->group(base_path('routes/admin.php')); }
在map()方法里调用上面增加的方法
public function map() { $this->mapApiRoutes(); $this->mapAdminWebRoutes();//调用新增的方法 $this->mapWebRoutes(); }
在routes目录下增加一个路由文件admin.php
<?php Route::get('login','Admin\Auth\LoginController@showLoginForm') ->middleware('guest:admin') ->name('admin.login.show'); Route::get('/','Admin\HomeController@index') ->name('admin.home'); Route::post('login','Admin\Auth\LoginController@postLogin') ->middleware('guest:admin') ->name('admin.login.post'); Route::post('logout','Admin\Auth\LoginController@postLogout') ->middleware('auth:admin') ->name('admin.logout');
把home.blade.php复制到resources/views/admin下
把layouts/app.blade.php复制为layouts/admin.blade.php,修改相应的地方
<ul class="nav navbar-nav navbar-right"> <!-- Authentication Links --> @guest('admin') <li><a href="{{ route('admin.login.show') }}">admin Login</a></li> @else <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true"> {{ Auth::guard('admin')->user()->name }} <span class="caret"></span> </a> <ul class="dropdown-menu"> <li> <a href="{{ route('admin.logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();"> Logout </a> <form id="logout-form" action="{{ route('admin.logout') }}" method="POST" style="display: none;"> {{ csrf_field() }} </form> </li> </ul> </li> @endguest </ul>
把login.blade.php复制到admin/Auth目录下
@extends('layouts.admin') @section('content') <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading">Admin Login</div> <div class="panel-body"> <form class="form-horizontal" method="POST" action="{{ route('admin.login.post') }}"> {{ csrf_field() }} <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> <label for="name" class="col-md-4 control-label">E-Mail Address</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required autofocus> @if ($errors->has('name')) <span class="help-block"> <strong>{{ $errors->first('name') }}</strong> </span> @endif </div> </div> <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> <label for="password" class="col-md-4 control-label">Password</label> <div class="col-md-6"> <input id="password" type="password" class="form-control" name="password" required> @if ($errors->has('password')) <span class="help-block"> <strong>{{ $errors->first('password') }}</strong> </span> @endif </div> </div> <div class="form-group"> <div class="col-md-8 col-md-offset-4"> <button type="submit" class="btn btn-primary"> Login </button> </div> </div> </form> </div> </div> </div> </div> </div> @endsection
数据填充
php artisan make:seed AdminsTableSeeder
编辑AdminsTableSeeder.php
public function run() { \App\Admin::insert([ 'name'=>'yzha5', 'password'=> bcrypt('123456') ]); } DatabaseSeeder.php $this->call(AdminsTableSeeder::class);
文件上传至服务器,登入服务器,执行填充命令
php artisan migrate php artisan db:seed
此时,直接打开http://xxx/admin并不会跳转到http://xxx/admin/login,因此需要处理一些异常。打开app/Exceptions/Handle.php
重写unauthenticated()方法。
use Illuminate\Support\Facades\Route; protected function unauthenticated($request, AuthenticationException $exception) { return starts_with(Route::currentRouteName(), 'admin') ? redirect(route('admin.login.show')) : parent::unauthenticated($request, $exception); }
完善一下
以上代码,当admin登录后,再次访问/admin/login这个URI时,会自动跳转到/home这个URI,这是因为guest这个中间件默认跳转到了/home,也就是middleware目录下的RedirectIfAuthenticated.php这个文件。
解决方法为:
创建一个中单件,名为:RedirectIfAdminAuthenticated
php artisan make:middleware RedirectIfAdminAuthenticated
编辑这个文件:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RedirectIfAdminAuthenticated { /** * Handle an incoming request. * * @param $request * @param Closure $next * @param null $guard * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|mixed */ public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { return redirect('/admin'); } return $next($request); } } 在Kernel.php中添加一行 protected $routeMiddleware = [ ... 'admin.guest' => \App\Http\Middleware\RedirectIfAdminAuthenticated::class, ... ]; 更改admin路由,将guest:admin改为admin.guest:admin Route::get('login','Admin\Auth\LoginController@showLoginForm') ->middleware('admin.guest:admin') ->name('admin.login.show'); Route::post('login','Admin\Auth\LoginController@postLogin') ->middleware('admin.guest:admin') ->name('admin.login.post');
Atas ialah kandungan terperinci laravel如何实现多用户体系登录. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Dalam pembangunan stack penuh Laravel, kaedah yang berkesan untuk menguruskan API dan logik front-end termasuk: 1) menggunakan pengawal yang tenang dan API Pengurusan Routing Sumber; 2) memproses logik front-end melalui templat bilah dan vue.js atau bertindak balas; 3) mengoptimumkan prestasi melalui versi API dan paging; 4) Mengekalkan pemisahan logik back-end dan front-end untuk memastikan kebolehpercayaan dan skalabiliti.

TOTACKLECULTRURULTRALICRICIESIESIESTRIBUTEDTEAMS, FOSTERANEnVironmentceleBratingDifferences, bemindfulofCommunication, Andusetoolsforclarity.1) pelaksanaanCulturalExchangeSessiesSharestoSharestoryTraditions.2) AdjustCommunicationMetoDStureitCreferit

Toassessheeffectivenessofremotecommunication, focuson: 1) EngagementmetricslikeMessageFrequencyandResponsetime, 2) sentimentAnalySistogaugeemotionaltone, 3) mesyuaratFectivenessThoughtendanceandActionItems, and4) NetworkAnalySistoundSounderpoMunicationPa

TOPROTECTSENSITIVEDATAINDISTEDTEAMS, Explectionamulti-FacetedApproach: 1) Useend-to-EndencryptionForsecureCommunication, 2) ApplyRole-AssedaccessControl (RBAC)

Tidak, emailnotthebostforremotecollaborationtoday.Modern PlatformLack, Microsoft Teams, Zoom, Asana, Andtrellofferreal-Time Communication, Project Management, andintegrationFeaturestHancteamworkandechiency.

Pengeditan dokumen kolaboratif adalah alat yang berkesan untuk pasukan yang diedarkan untuk mengoptimumkan aliran kerja mereka. Ia meningkatkan kemajuan komunikasi dan projek melalui kerjasama masa nyata dan gelung maklum balas, dan alat umum termasuk Google Docs, Microsoft Teams, dan thours. Perhatikan cabaran seperti kawalan versi dan keluk pembelajaran apabila menggunakannya.

Thepreviousversionoflaravelissupportedwithbugfixesforsmonthsandsecurityfixesforoneyearaftteranewmajorversion'sRelease.underterstheSthissupporttimelineiscialforplanningupgrades, memastikan pro -projectem

Laravelcanbeeffectivelyfiedforbothfrontendandbackenddevelopment.1) Backend: Utilizelaravel'seloquentormforsimplifiedDatabaseIntions.2) Frontend: leverageBladetemplatesforcleanhtmlandIntegrate.jsfordynamicspas, ensuringseamesseAlesseAlesseAlesseAlesseAt


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod
