国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

laravel如何實現多用戶體系登錄

來源:懂視網 責編:小采 時間:2020-11-03 18:16:00
文檔

laravel如何實現多用戶體系登錄

laravel如何實現多用戶體系登錄:laraveli添加一個或多個用戶表,以admin為例。部分文件內容可能需要根據實際情況修改推薦:laravel教程創建一個Admin模型php artisan make:model Admin -m編寫admins表字段Schema::create('admins', function (B
推薦度:
導讀laravel如何實現多用戶體系登錄:laraveli添加一個或多個用戶表,以admin為例。部分文件內容可能需要根據實際情況修改推薦:laravel教程創建一個Admin模型php artisan make:model Admin -m編寫admins表字段Schema::create('admins', function (B

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 IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;
/**
 * @property int $id
 * @property CarbonCarbon $created_at
 * @property CarbonCarbon $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' => AppAdmin::class,
 ]
],

在app/Http/Controllers下創建目錄Admin/Auth

在Admin目錄下創建文件HomeController.php(這個文件用來測試登錄成功后的跳轉頁面)

<?php
namespace AppHttpControllersAdmin;
use AppHttpControllersController;
use IlluminateHttpRequest;
class HomeController extends Controller
{
 /**
 * HomeController constructor.
 */
 public function __construct()
 {
 $this->middleware('auth:admin');
 }
 /**
 * Show the application dashboard.
 *
 * @return IlluminateHttpResponse
 */
 public function index()
 {
 return view('admin.home');
 }
}

使用命令生成一個Request

php artisan make:request AdminLoginRequest

此時在app/Http/Request目錄下便生成了這個文件,然后編輯這個文件

<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
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 AppHttpControllersAdminAuth;
use AppHttpControllersController;
use AppHttpRequestsAdminLoginRequest;
use IlluminateSupportFacadesAuth;
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','AdminAuthLoginController@showLoginForm')
 ->middleware('guest:admin')
 ->name('admin.login.show');
Route::get('/','AdminHomeController@index')
 ->name('admin.home');
Route::post('login','AdminAuthLoginController@postLogin')
 ->middleware('guest:admin')
 ->name('admin.login.post');
Route::post('logout','AdminAuthLoginController@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()
 {
 AppAdmin::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 IlluminateSupportFacadesRoute;
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 AppHttpMiddleware;
use Closure;
use IlluminateSupportFacadesAuth;
class RedirectIfAdminAuthenticated
{
 /**
 * Handle an incoming request.
 *
 * @param $request
 * @param Closure $next
 * @param null $guard
 * @return IlluminateHttpRedirectResponse|IlluminateRoutingRedirector|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' => AppHttpMiddlewareRedirectIfAdminAuthenticated::class,
 ...
 ];
更改admin路由,將guest:admin改為admin.guest:admin
Route::get('login','AdminAuthLoginController@showLoginForm')
 ->middleware('admin.guest:admin')
 ->name('admin.login.show');
Route::post('login','AdminAuthLoginController@postLogin')
 ->middleware('admin.guest:admin')
 ->name('admin.login.post');

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

laravel如何實現多用戶體系登錄

laravel如何實現多用戶體系登錄:laraveli添加一個或多個用戶表,以admin為例。部分文件內容可能需要根據實際情況修改推薦:laravel教程創建一個Admin模型php artisan make:model Admin -m編寫admins表字段Schema::create('admins', function (B
推薦度:
標簽: 登錄 用戶 實現
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 不卡一级aaa全黄毛片 | 欧美二区在线观看 | 欧美日韩亚洲国产一区二区三区 | 大陆日韩欧美 | 欧美福利一区 | 在线欧美日韩 | 午夜精品一区二区三区在线观看 | 欧美第一页在线 | 日韩电影中文字幕在线网站 | 特级全黄一级毛片视频 | 欧美日韩亚洲无线码在线观看 | 亚洲欧美日韩在线观看播放 | 自拍偷拍 欧美日韩 | 人人爽天天碰天天躁夜夜躁 | 久久久久无码国产精品一区 | 国产精品女同一区二区久久 | 亚洲欧美日韩网站 | 国产产一区二区三区久久毛片国语 | 国产高清精品一级毛片 | 91麻豆国产精品91久久久 | 国产欧美久久一区二区 | 国产在线一区二区 | 国模双双大尺度炮交g0go | 亚洲第一区视频 | 亚洲欧美国产另类 | 在线免费国产 | 亚洲欧洲视频在线 | 亚洲精品第一页 | 激情午夜婷婷 | 精品国产一区二区三区免费看 | 国产原创91 | 永久免费观看的毛片的网站 | 国产精品第 | 中文字幕日韩一区二区三区不卡 | 亚洲国产天堂久久九九九 | 欧美成人禁片在线观看网址 | 国产一区二区精品久久 | 国产精品合集一区二区三区 | 国产片欧美片亚洲片久久综合 | 亚洲高清色 | 国产成人综合精品一区 |