河南创达建设工程管理有限公司网站,网站开发一个多少钱,做团膳有哪些网站,用域名访问网站原文链接:https://www.jianshu.com/p/e131af68e6b3 1. 目的
本文来简单的讲解 laravel 中guard 用法#xff0c;实现 admin 和 user 多表登陆#xff08;只讲了登陆功能#xff0c;其它的功能都一样#xff0c;不多赘述#xff09;
2. 配置
首先需要在 codeaut…原文链接:https://www.jianshu.com/p/e131af68e6b3 1. 目的
本文来简单的讲解 laravel 中guard 用法实现 admin 和 user 多表登陆只讲了登陆功能其它的功能都一样不多赘述
2. 配置
首先需要在 codeauth.php/code 中配置 admin 的 codeguards/code 和 codeproviders/code 什么是 guard 呢在我看来它就像是部落user 就像是部落的人想找部落里的人就要指定部落\Auth::guard(admin)-user()不加guard默认取web部落中的人 guards [web [driver session,provider users,],admin [driver session,provider admins,],api [driver token,provider users,],],// providers 中的这个模型将使用默认的 Eloquent 认证来驱动。// 如果你的应用程序没有使用 Eloquent请选择使用 Laravel 查询构造器的 database 认证驱动。providers [users [driver eloquent,model App\User::class,],admins [driver eloquent,model App\Admin::class,],// users [// driver database,// table users,// ],],3. 创建相关文件
首先 art make:auth 创建 laravel 自带的登陆界面并且创建 Admin Model 及其迁移文件
art make:model Admin -m修改 Admin.php namespace App;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,];}修改 Admin 的迁移文件 后台采用 name 和 password 验证修改完成后 art migrate 生成数据表 public function up(){Schema::create(admins, function (Blueprint $table) {$table-increments(id);$table-string(name)-unique();$table-string(password);$table-rememberToken();$table-timestamps();});视图 因为要实现前后台用户的不同登陆所以首先需要 2 组视图界面 复制 layouts 下面的 app.blade.php改名为 admin.blade.php 并对该文件做出修改// 将路由指向 admin.login
// 将 Auth::guest() 改为 Auth::guard(admin)-guest()
!-- Right Side Of Navbar --ul classnav navbar-nav navbar-right if (Auth::guard(admin)-guest()) lia href{{ route(admin.login) }}Login/a/li {{-- lia href{{ route(register) }}Register/a/li --}} else li classdropdown a href# classdropdown-toggle data-toggledropdown rolebutton aria-expandedfalse {{ Auth::guard(admin)-user()-name }} span classcaret/span /a
- 复制 __auth__ 下面的 login.blade.php 到 __views__ 文件夹下面的 __admin__ 文件夹这个需要手动创建下// 将路由改为 admin.login // 将 email 全部改为 name 因为本文后台登陆是用 name 和 password 登陆 form classform-horizontal methodPOST action{{ route(admin.login) }} {{ csrf_field() }}
div classform-group{{ $errors-has(name) ? has-error : }}label forname classcol-md-4 control-labelAdminName/labeldiv classcol-md-6input idname typename classform-control namename value{{ old(name) }} required autofocusif ($errors-has(name))span classhelp-blockstrong{{ $errors-first(name) }}/strong/spanendif/div
/div- 复制 home.blade.php 到 __admin__ 下并且改名 index.blade.php 然后做出如下修改div classpanel-body text-success You are logged in, Admin! /div
- __控制器__- 复制 __Auth__ 下面的 LoginController.php 到 admin 文件夹下手动创建并且做出以下修改// 登陆成功后的跳转页面 protected $redirectTo /admin/index;
/*** Create a new controller instance.** return void*/
public function __construct()
{$this-middleware(guest)-except(logout);
}// 后台登陆页面
public function showLoginForm()
{return view(admin.login);
}// 指定 guard
protected function guard()
{return \Auth::guard(admin);
}// 将登陆验证的字段 email 改为 name
public function username()
{return name;
}- 将 HomeController.php 复制到 __admin__ 文件夹下并且做出修改// 只是简单的添加了登陆成功后跳转的视图路径 /** * Create a new controller instance. * * return void */ public function __construct() { $this-middleware(guest); }
/*** Show the application dashboard.** return \Illuminate\Http\Response*/
public function index()
{return view(admin.index);
}- 修改 __Middleware__ 中的 RedirectIfAuthenticated.php// 因为前后台的控制器用的是 guest 中间件所以这里需要做出判断跳转不同页面 public function handle($request, Closure $next, $guard null) { if (Auth::guard($guard)-check()) { $url $guard ? /admin/index : /home; return redirect($url); } return $next($request);
}#4. 生成测试数据- 用 __factory__ 生成一些后台测试用户怎么生成就不说了详见 [创建模型工厂](http://d.laravel-china.org/docs/5.4/database-testing#writing-factories)#5. 最后一步就是修改 __routes.php__ 文件啦
- 添加 __admin__ 路由Route::group([prefixadmin],function(){ Route::get(login, Admin\LoginControllershowLoginForm)-name(admin.login); Route::post(login, Admin\LoginControllerlogin); }); ---------------# end :)