laravel5.2实现区分前后台用户登录的方法


Posted in PHP onJanuary 11, 2017

1.前台登录

直接使用laravel自带的auth

php artisan make:auth

然后可以查看路由文件:

Route::group(['middleware' => 'web'], function () {
 Route::auth();
 Route::get('/home', 'HomeController@index');
});

执行php artisan migrate

会发现生成了两张表。

2.后台登录

编辑配置文件

config\auth.php

添加guards中的admin和providers中的admins

<?php
return [
 'defaults' => [
  'guard' => 'web',
  'passwords' => 'users',
 ],
 '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\Admin::class,
  ],
 ],
 'passwords' => [
  'users' => [
   'provider' => 'users',
   'email' => 'auth.emails.password',
   'table' => 'password_resets',
   'expire' => 60,
  ],
 ],
];

3.创建数据模型

执行php artisan make:model Admin --migration

然后修改database\migrations中的数据表结构,复制user表的就可以

执行php artisan migrate 会发现生成了admin表

4.定义后台路由

这里我直接定义了一个路由组

Route::group(['prefix' => 'admin' ,'middleware' => 'admin'], function () {
 Route::get('login', 'Admin\AuthController@getLogin');
 Route::post('login', 'Admin\AuthController@postLogin');
 Route::get('register', 'Admin\AuthController@getRegister');
 Route::post('register', 'Admin\AuthController@postRegister');
 Route::get('logout', 'Admin\AuthController@logout');
 Route::get('/', 'Admin\AdminController@index');
});

5.创建控制器

执行

php artisan make:controller Admin/AuthController
php artisan make:controller Admin/AdminController

AuthController.php可参照Auth中的AuthController.php

<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
 use AuthenticatesAndRegistersUsers, ThrottlesLogins;
 protected $redirectTo = '/admin';
 protected $guard = 'admin';
 protected $loginView = 'admin.login';
 protected $registerView = 'admin.register';
 public function __construct()
 {
  $this->middleware('guest:admin', ['except' => 'logout']);
 }
 protected function validator(array $data)
 {
  return Validator::make($data, [
   'name' => 'required|max:255',
   'email' => 'required|email|max:255|unique:admins',
   'password' => 'required|confirmed|min:6',
  ]);
 }
 protected function create(array $data)
 {
  return Admin::create([
   'name' => $data['name'],
   'email' => $data['email'],
   'password' => bcrypt($data['password']),
  ]);
 }
}

AdminController.php

<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
class AdminController extends Controller
{
 public function __construct()
 {
  $this->middleware('auth:admin');
 }
 public function index()
 {
  $admin = Auth::guard('admin')->user();
  return view('admin.home');
 }
}

6.创建视图

这里直接复制auth中的视图和home.blade.php到一个新的admin文件夹中。 

修改login和register中表单的action,添加上admin前缀

修改layouts中的app.blade.php

<ul class="nav navbar-nav navbar-right">
     <!-- Authentication Links -->
     @if (Auth::guest('admin'))
      <li><a href="{{ url('/login') }}">Login</a></li>
      <li><a href="{{ url('/register') }}">Register</a></li>
     @else
      <li class="dropdown">
       <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
        {{ Auth::guard('admin')->user()->name }} <span class="caret"></span>
       </a>
       <ul class="dropdown-menu" role="menu">
        <li><a href="{{ url('/admin/logout') }}"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li>
       </ul>
      </li>
     @endif
    </ul>

现在试一下前后台分别登录吧!

7.可能遇到的页面跳转问题

如果你遇到了这种情况可以尝试修改一下Middleware\Authenticate.php

return redirect()->guest($guard.'/login');

以上所述是小编给大家介绍的laravel5.2实现区分前后台用户登录的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
php下连接mssql2005的代码
Jan 17 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
php计算年龄精准到年月日
Nov 17 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
phpinfo的知识点总结
Oct 10 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
PHP的imageTtfText()函数深入详解
Mar 03 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 #PHP
php实现36进制与10进制转换功能示例
Jan 10 #PHP
php获取当前url地址的方法小结
Jan 10 #PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 #PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 #PHP
php 访问oracle 存储过程实例详解
Jan 08 #PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 #PHP
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
phpMyadmin 用户权限中英对照
2010/04/02 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
PHP精确计算功能示例
2016/11/29 PHP
javascript Array对象基础知识小结
2010/11/16 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
Python中的startswith和endswith函数使用实例
2014/08/25 Python
Python函数式编程实例详解
2020/01/17 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
python实现经纬度采样的示例代码
2020/12/10 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
Java如何调用外部Exe程序
2015/07/04 面试题
幼儿如何来做好自我评价
2013/11/05 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
运动会解说词50字
2014/01/18 职场文书
主办会计岗位职责
2014/03/13 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
Java 异步任务计算FutureTask
2022/04/28 Java/Android