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的开发框架的现状和展望
Mar 16 PHP
php session 错误
May 21 PHP
smarty表格换行实例
Dec 15 PHP
PHP正则验证Email的方法
Jun 15 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
WAF的正确bypass
Jan 05 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 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
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
微信小程序实现菜单左右联动
2020/05/19 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python内存读写操作示例
2018/07/18 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
2014全国两会学习心得体会1000字
2014/03/10 职场文书
解除劳动合同协议书
2014/04/14 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2014年班组工作总结
2014/11/20 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
Python简易开发之制作计算器
2022/04/28 Python
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android