日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Laravel5.6 实现后台管理登录(自定义用户表登录)

發布時間:2025/5/22 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Laravel5.6 实现后台管理登录(自定义用户表登录) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、添加guard 認證驅動

'guards' => ['web' => ['driver' => 'session','provider' => 'users',],'admin' => ['driver' => 'session','provider' => 'admins',],'api' => ['driver' => 'token','provider' => 'users',],'providers' => ['users' => ['driver' => 'eloquent','model' => App\User::class,],'admins' => ['driver' => 'eloquent','model' => App\Models\Admin::class,],],復制代碼

2、創建后臺用戶表和model

php artisan make:model Models/Admin -m復制代碼

3、修改Admin模型類如下

<?phpnamespace App\Models;use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable;class Admin extends Authenticatable {use Notifiable;/*** The attributes that are mass assignable.** @var array*/protected $fillable = ['name', 'email', 'password',];/*** The attributes that should be hidden for arrays.** @var array*/protected $hidden = ['password', 'remember_token',]; }復制代碼

4、在數據庫遷移文件 _create_admins_table ,復制 users 遷移文件里的字段

public function up() {Schema::create('admins', function (Blueprint $table) {$table->increments('id');$table->string('name');$table->string('email');$table->string('password');$table->rememberToken();$table->timestamps();}); }執行php artisan migrate在 database/factories/ModelFactory.php, 添加如下數據:$factory->define(App\Models\Admin::class, function (Faker\Generator $faker) {static $password; return [ 'name' => $faker->name, 'password' => $password ?: $password = bcrypt('123456'), 'email' => $faker->email, 'remember_token' => str_random(10), ]; });打開命令行輸入: php artisan tinker use App factory(App\Models\Admin::class,5)->create() //生成5條測試數據,你要幾條就輸入多少(Class,num) 復制代碼

5、創建控制器

php artisan make:controller Admin/LoginController php artisan make:controller Admin/AdminController 復制代碼

6、編輯 Admin/LoginController.php ,代碼如下:

<?phpnamespace App\Http\Controllers\Admin;use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Foundation\Auth\AuthenticatesUsers;class LoginController extends Controller {/*|--------------------------------------------------------------------------| Login Controller|--------------------------------------------------------------------------|| This controller handles authenticating users for the application and| redirecting them to your home screen. The controller uses a trait| to conveniently provide its functionality to your applications.|*/use AuthenticatesUsers;/*** Where to redirect users after login / registration.** @var string*/protected $redirectTo = '/admin';protected $username;/*** 用戶名登陸*/public function username(){return 'name';}/*** 多字段登錄并判斷狀態*/public function attemptLogin(Request $request){$username = $request->input('name');$password = $request->input('password');// 驗證用戶名登錄方式$usernameLogin = $this->guard()->attempt(['name' => $username, 'password' => $password,'status'=>1], $request->has('remember'));if ($usernameLogin) {return true;}// 驗證手機號登錄方式$mobileLogin = $this->guard()->attempt(['mobile' => $username, 'password' => $password,'status'=>1], $request->has('remember'));if ($mobileLogin) {return true;}// 驗證郵箱登錄方式$emailLogin = $this->guard()->attempt(['email' => $username, 'password' => $password,'status'=>1], $request->has('remember'));if ($emailLogin) {return true;}return false;}/*** Create a new controller instance.* @return void*/public function __construct(){$this->middleware('guest:admin', ['except' => 'logout']);$this->username = config('admin.global.username');}/*** 重寫登錄視圖頁面*/public function showLoginForm(){return view('admin.login');}/*** 退出到登錄頁面*/public function logout(Request $request){$this->guard()->logout();$request->session()->invalidate();return redirect('/admin/login');}/*** 驗證登錄*/protected function validateLogin(Request $request){$this->validate($request, [$this->username() => 'required|string','password' => 'required|string','captcha' => 'required|captcha',]);}/*** 自定義認證驅動*/protected function guard(){return auth()->guard('admin');} }復制代碼

7、在 LoginController 中我們在構造函數中修改了 guest 中間件

  • app\Http\Middleware\RedirectIfAuthenticated.php
<?phpnamespace App\Http\Middleware;use Closure; use Illuminate\Support\Facades\Auth;class RedirectIfAuthenticated {/*** Handle an incoming request.** @param \Illuminate\Http\Request $request* @param \Closure $next* @param string|null $guard* @return mixed*/public function handle($request, Closure $next, $guard = null){if (Auth::guard($guard)->check()) {// 根據不同 guard 跳轉到不同的頁面$url = $guard ? '/admin':'/';return redirect($url);}return $next($request);} }復制代碼

8、編輯 Admin/AdminController.php ,代碼如下

<?phpnamespace App\Http\Controllers\Admin;use Illuminate\Http\Request;use App\Http\Requests; use App\Http\Controllers\Controller;class AdminController extends Controller {/*** Create a new controller instance.** @return void*/public function __construct(){$this->middleware('auth.admin:admin');}/*** Show the application dashboard.** @return \Illuminate\Http\Response*/public function index(){dd('后臺首頁,當前用戶名:'.auth('admin')->user()->name);} }復制代碼

9、在 AdminController 構造函數中我們添加了一個 auth.admin Middlewar

php artisan make:middleware AdminAuth<?phpnamespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth;class AdminAuth {/*** Handle an incoming request.** @param \Illuminate\Http\Request $request* @param \Closure $next* @return mixed*/public function handle($request, Closure $next,$guard = null){if (Auth::guard($guard)->guest()) {if ($request->ajax() || $request->wantsJson()) {return response('Unauthorized.', 401);} else {return redirect()->guest('admin/login');}}return $next($request);} }復制代碼

10、在 app\Http\Kernel.php 中注冊:

protected $routeMiddleware = [......'auth.admin' => \App\Http\Middleware\AdminAuth::class,...... ];復制代碼

11、在 routes/web.php 中添加如下路由:

Route::group(['prefix'=>'admin','namespace'=>'Admin'],function (){//后臺登陸退出Route::get('login', 'LoginController@showLoginForm')->name('admin.login');Route::post('login', 'LoginController@login');Route::post('logout', 'LoginController@logout')->name('admin.logout');//后臺首頁Route::get('/', 'AdminController@index')->name('admin.index');});復制代碼

最后把提交地址的路由改成 {{ route('admin.login') }}


總結

以上是生活随笔為你收集整理的Laravel5.6 实现后台管理登录(自定义用户表登录)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。