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 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
PHP+DBM的同学录程序(3)
Oct 09 PHP
一周学会PHP(视频)Http下载
Dec 12 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
如何在php中正确的使用json
Aug 06 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
php实现的顺序线性表示例
May 04 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
Javascript 刷新全集常用代码
2009/11/22 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
理解javascript异步编程
2016/01/27 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python getopt 参数处理小示例
2009/06/09 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
python 线程的五个状态
2020/09/22 Python
党员廉洁自律承诺书
2014/05/26 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
八年级语文教学反思
2016/03/03 职场文书
欧元符号 €
2022/02/17 杂记
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang