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 相关文章推荐
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
php运行时动态创建函数的方法
Mar 16 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php对数组内元素进行随机调换的方法
May 12 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
php-7.3.6 编译安装过程
Feb 11 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 获取可变函数参数的函数
2009/08/26 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
python 网络爬虫初级实现代码
2016/02/27 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
python regex库实例用法总结
2021/01/03 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
自主招生自荐信格式
2013/12/03 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
小学家长会邀请函
2014/01/23 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
安全生产标语
2014/06/06 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
保密工作整改报告
2014/11/06 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python