laravel 用户登录认证(Laravel5.5 实现后台管理登录的方法自定义用户表登录)
laravel 用户登录认证
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 实现后台管理登录的方法(自定义用户表登录)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/sunjinyan_1/article/details/80927611
- 配置mysql可以远程登录(开启MySQL远程连接的方法)
- django登录模块(Django实现单用户登录的方法示例)
- ubuntu16.04开机默认root(新版ubuntu20.04 使用root用户登录系统的详细教程)
- 用python简单实现登录功能(使用python的pexpect模块,实现远程免密登录的示例)
- 小鸟云怎么登录服务器(小鸟云服务器登陆图文教程)
- mysql用户登录命令(mysql的登陆和退出命令格式)
- 安装C# Windows服务需要“设置服务登录”
- vue element admin接口(Vue-Element-Admin集成自己的接口实现登录跳转)
- laravel后台登录教程(Laravel 默认邮箱登录改成用户名登录的实现方法)
- python中怎么实现登录程序(详解Python用户登录接口的方法)
- SQLServer设置客户端使用IP地址登录的图文详解(SQLServer设置客户端使用IP地址登录的图文详解)
- 云服务器无法操作(云服务器登录连接失败解决方案)
- vue代码和element用法(Vue Element前端应用开发之整合ABP框架的前端登录)
- 忘记mysql密码怎么登录(Mysql用户忘记密码及密码过期问题的处理方法)
- serv-u怎么用web登录(serv-u服务器的管理方法与功能分析)
- 阿里云服务器更改登录密码(阿里云服务器怎么修改登录密码?)
- 文莱旅游攻略(文莱旅游攻略介绍)
- 马来西亚旅游攻略(马来西亚旅游攻略自由行攻略)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
- 《庆余年2》新消息,原班人马,肖战特别出演,这才是最好的安排(庆余年2新消息原班人马)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
热门推荐
- python坐标输入(python导入坐标点的具体操作)
- centos上docker的部署(CentOS8下的Docker使用详解)
- bootstrap怎么用虚线框(Bootstrap网页布局网格的实现)
- laravel5.2模型返回数组(解决Laravel5.5下的toArray问题)
- docker的配置与使用(docker之docker-machine用法详解)
- vue可以用vite打包吗(vite+vue3+element-plus项目搭建的方法步骤)
- Asp.net导出Excel乱码
- html5中提供的绘图元素(使用Html5中的cavas画一面国旗)
- pythonjpg转pdf格式(Python使用到第三方库PyMuPDF图片与pdf相互转换)
- VPS服务器常用性能测试脚本汇总(VPS服务器常用性能测试脚本汇总)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9