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 数组二分法查找函数代码
Feb 16 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
php二分查找二种实现示例
Mar 12 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
CI框架常用方法小结
May 17 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
php两点地理坐标距离的计算方法
Dec 29 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
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
javascript json 新手入门文档
2009/12/03 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python实现统计代码行数的小工具
2019/09/19 Python
python读文件的步骤
2019/10/08 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
高二英语教学反思
2014/01/19 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript