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读取IMAP邮件
Oct 09 PHP
PHP 数组教程 定义数组
Oct 23 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
深入php list()函数的详解
Jun 05 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
php数值计算num类简单操作示例
May 15 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
php解析xml方法实例详解
2015/05/12 PHP
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
Cookie 小记
2010/04/01 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
js实现简单模态框实例
2018/11/16 Javascript
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Python sys模块常用方法解析
2020/02/20 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
供货协议书
2014/04/22 职场文书
师范毕业生求职信
2014/07/11 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
2014年学前班工作总结
2014/12/08 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang