Laravel5.5 实现后台管理登录的方法(自定义用户表登录)

最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下

自定义用户表登录

认证是由 guards 和 providers 两部分构成的, defaults 配置是默认选择一个 guard 认证驱动,所以我们在这两个配置项中分别添加一个 admin 和 admins 选项。

<?php
 'guards' => [
  'web' => [
   'driver' => 'session',
   'provider' => 'users',
  ],
  'admin' => [
   'driver' => 'session',
   'provider' => 'admins',
  ],
 'providers' => [
  'users' => [
   'driver' => 'eloquent',
   'model' => App\User::class,
  ],
  'admins' => [
   'driver' => 'eloquent',
   'model' => App\Models\Admin::class,
  ],
 ], 

标红的是我们后添加的后台管理员登录身份

创建后台用户表和model

php artisan make:model Admin
php artisan make:migration creaet_admins_table 

在数据库迁移文件 _create_admins_table , 我们可以复制 users 迁移文件里的字段

Schema::create('admins', function (Blueprint $table) {
   $table->increments('id');
   $table->string('name');
   $table->string('email');
   $table->string('password');
   $table->rememberToken();
   $table->timestamps();
  }); 

执行php artisan migrate

生成临时数据

在 database/factories/ModelFactory.php, 添加如下数据:

$factory->define(App\Admin::class, function (Faker\Generator $faker) {
 static $password; 

 return [
  'name' => $faker->name,
  'password' => $password ?: $password = bcrypt('123456'),
  'email' => $faker->email,
  'remember_token' => str_random(10),
 ];
}); 

打开命令行输入:

php artisan tinker
 use App;
 factory(App\Admin::class,5)->create()
 //生成5条测试数据,你要几条就输入多少(Class,num) 

更改 Admin 模型类

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable; 

class Admin extends Authenticatable
{
 use Notifiable; 

 /**
  * The attributes that are mass assignable.
  *
  * @var array
  */
 protected $fillable = [
  'name', 'email', 'password',
 ]; 

 /**
  * The attributes that should be hidden for arrays.
  *
  * @var array
  */
 protected $hidden = [
  'password', 'remember_token',
 ];
}

创建控制器

php artisan make:controller Admin/LoginController
php artisan make:controller Admin/AdminController 

编辑 Admin/LoginController.php:

<?php 

namespace App\Http\Controllers\Admin; 

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesUsers; 

class LoginController extends Controller
{
 use AuthenticatesUsers; 

 /**
  * Where to redirect users after login / registration.
  *
  * @var string
  */
 protected $redirectTo = '/admin/index';
 protected $username; 

 /**
  * Create a new controller instance.
  *
  * @return void
  */
 public function __construct()
 {
  $this->middleware('guest:admin', ['except' => 'logout']);
  $this->username = config('admin.global.username');
 } 

 /**
  * 重写登录视图页面
  */
 public function showLogin()
 {
  return view('admin.login.index');
 } 

 /**
  * 自定义认证驱动
  * @return mixed
  */
 protected function guard()
 {
  return auth()->guard('admin');
 } 

}

修改 app\Http\Middleware\RedirectIfAuthenticated.php:

public function handle($request, Closure $next, $guard = null)
 {
  if (Auth::guard($guard)->check()) {
   // 根据不同 guard 跳转到不同的页面
   $url = $guard ? 'admin/dash':'/home';
   return redirect($url);
  } 

  return $next($request);
 }

编辑 Admin\AdminController.php:

<?php 

namespace App\Http\Controllers\Admin; 

use App\Http\Controllers\Controller; 

class AdminController extends Controller
{
 /**
  * Create a new controller instance.
  *
  * @return void
  */
 public function __construct()
 {
  $this->middleware('auth.admin:admin');
 }
 //
 public function index()
 {
  dd('用户名:'.auth('admin')->user()->name);
 }

编辑 app\Http\Middleware\AdminAuthMiddleware.php

public function handle($request, Closure $next, $guard = null)
 {
  if (Auth::guard($guard)->guest()) {
   if ($request->ajax() || $request->wantsJson()) {
    return response('Unauthorized.', 401);
   } else {
    return redirect()->guest('admin/login');
   }
  }
  return $next($request);
 }

在 app\Http\Kernel.php 中注册:

protected $routeMiddleware = [
  ··· ···
  'auth.admin' => \App\Http\Middleware\AdminAuthMiddleware::class,
 ];

注册路由

编辑 routes/web.php :

Route::group(['prefix' => 'admin','namespace' => 'Admin'],function ($router)
{
 $router->get('login', 'LoginController@showLogin')->name('admin.login');
 $router->post('login', 'LoginController@login');
 $router->post('logout', 'LoginController@logout'); 

 $router->get('index', 'AdminController@index');
}); 

视图文件创建和修改

复制 resources\views\auth\login.blade.php,到 resources\views\admin\login\index.blade.php,修改表单提交地址

{{ url('/login') }} 改成 {{ route('admin.login') }} 

访问 你的站点/admin/login

以上这篇Laravel5.5 实现后台管理登录的方法(自定义用户表登录)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 基于Laravel Auth自定义接口API用户认证的实现方法

    基于 laravel 默认的 auth 实现 api 认证 现在微服务越来越流行了. 很多东西都拆分成独立的系统,各个系统之间没有直接的关系. 这样我们如果做用户认证肯定是统一的做一个独立的 用户认证 系统,而不是每个业务系统都要重新去写一遍用户认证相关的东西. 但是又遇到一个问题了. laravel 默认的auth 认证 是基于数据库做的,如果要微服务架构可怎么做呢? 实现代码如下: UserProvider 接口: // 通过唯一标示符获取认证模型 public function retri

  • Laravel搭建后台登录系统步骤详解

    本文实例讲述了Laravel搭建后台登录系统的方法.分享给大家供大家参考,具体如下: 今天想用laravel搭建一个后台系统,就需要最简单的那种,有用户登录系统,试用了下,觉得laravel的用户登录这块做的还真happy.当然,前提就是,你要的用户管理系统是最简单的那种,就是没有用户权限,能登录就好. 我这里就不用默认的user表做例子了,那样很容易和laravel的一些默认设置混淆. 首先确认,后台的用户表,我设计表叫做badmin,每个管理员有用户名(username),有昵称(nickn

  • Laravel实现用户注册和登录

    Laravel身为最优雅的PHP框架,很多学习PHP的小伙伴造就对Laravel垂涎欲滴.今天就来实现你的愿望,让我们一起从零开始,利用Laravel实现Web应用最常见的注册和登录功能!所有的课程源码已放在Github上:laravel-start. Race Start ! 首先我们来明确一下我们这个课程需要的东西: Laravel 4.2 Bootstrap 3.3 Laravel就是我们关心的核心部分,Bootstrap用来快速设置一些前端的CSS样式. 1.安装Laravel 简单说明

  • Laravel5.5 实现后台管理登录的方法(自定义用户表登录)

    最近群里很多人文档,laravel如何做会员和管理两个身份登录,今天把教程分享一下 自定义用户表登录 认证是由 guards 和 providers 两部分构成的, defaults 配置是默认选择一个 guard 认证驱动,所以我们在这两个配置项中分别添加一个 admin 和 admins 选项. <?php 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' =

  • Django自定义用户表+自定义admin后台中的字段实例

    1.自定义用户表 注意事项 必须在settings中配置AUTH_USER_MODEL这个字段 # 覆盖默认的用户模型,使用自定义用户模型 # 语 法:'app的名称.自定义用户模型的名称' AUTH_USER_MODEL = 'admi.UserModel' 2.在models文件中编写UserModel类 from django.db import models from django.contrib.auth.models import AbstractUser # Django框架将cr

  • php中使用session防止用户非法登录后台的方法

    本文实例讲述了php中使用session防止用户非法登录后台的方法.分享给大家供大家参考.具体如下: 一般来说,我们登录网站后台时,服务器会把登录信息保存到session文件里,并通过读取session文件来判断是否可以进行后台操作. 以下面为例,假如admin.php是我们的后台操作页面,如果没有启用 session,那么,即便是没有登录,用户照样能访问到该页面,这时候,就需要用到 session 来防止用户非法登录到这个页面了.下面是三个文件的代码 登录页面:login.php 复制代码 代

  • laravel5.2实现区分前后台用户登录的方法

    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中的a

  • django中的auth模块与admin后台管理方法

    目录 1. auth模块 1.1 auth模块的常用方法 1.2 如何扩展auth_user表 2.admin后台管理 2.1 admin后台管理的准备工作 2.2 为admin后台设置样式和增加数据 1. auth模块 auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等. 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_use

  • PHP magento后台无法登录问题解决方法

    PHP magento后台无法登解决办法 可能很多朋友有同样的经历,magento在服务器中配置域名是可以正常的访问了,但是在本地配置后却无法登录后台,账号密码登录的时候发现出现空白,无法跳转到后台,本文章向大家介绍两种解决本地magento后台无法登录的方法,需要的朋友可以参考一下. 解决方法一: 这是一个cookie问题,使用firefox等非IE核心浏览器可以解决这个问题,虽然浏览器处理cookie的方式很相似但并不是100%相同, Magento其它的版本也有这个问题. 详细的修正这个问

  • Laravel5.4框架使用socialite实现github登录的方法

    本文实例讲述了Laravel5.4框架使用socialite实现github登录的方法.分享给大家供大家参考,具体如下: 1.安装laravel5.4 composer create-project laravel/laravel zcms 5.4 2.安装Socialite composer require laravel/socialite 3.配置 编辑config/app.php 'providers' => [ // 其它服务提供者... Laravel\Socialite\Socia

  • PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】

    本文实例讲述了PHP实现用户异地登录提醒功能的方法.分享给大家供大家参考,具体如下: 对于安全性要求比较高的web网站,特别是后台管理,有时候需要甄别自己的账号是否被盗或者是否有另一个人此刻登陆了在进行后台操作,这些都会很不安全,为了避免两个人同时登录同时操作,可以强制下线一个账号. 通过IP判断当然是不行的,因为IP是随时会在某一个网段内变化的,但是有一个机制,恰巧可以解决这个,那就是session,只要使用同一个浏览器访问网站,浏览器不关闭每个来访者的session_id是不变的,这也正是解

  • vue实现后台管理权限系统及顶栏三级菜单显示功能

    •效果演示地址 项目demo展示 重要功能总结 权限功能的实现 权限路由思路: 根据用户登录的roles信息与路由中配置的roles信息进行比较过滤,生成可以访问的路由表,并通过router.addRoutes(store.getters.addRouters)动态添加可访问权限路由表,从而实现左侧和顶栏菜单的展示. 实现步骤: 1.在router/index.js中,给相应的菜单设置默认的roles信息: 如下:给"权限设置"菜单设置的权限为:meta:{roles: ['admin

  • 解决laravel5中auth用户登录其他页面获取不到登录信息的问题

    首先创建user表,里面有:id, name, password,remember_token等字段. 然后再Models添加表模型User.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use DB; class User extends Model

随机推荐