Laravel 自带的Auth验证登录方法


Posted in PHP onSeptember 30, 2019

在laravel有自带的登录验证。只要建立对应的表和配置一些文件就能够使用,无需开发者自己去实现登录逻辑。

第一步:配置方面

在config下的auth.php配置guards 和 providers 。 之后新建文件和数据库名称要和这里的对应。

'guards' => [
  'web' => [
   'driver' => 'session',
   'provider' => 'users',
  ],

  'api' => [
   'driver' => 'token',
   'provider' => 'users',
  ],
  //Laravel Auth 验证登录
  'admin' => [
   'driver' => 'session',
   'provider' => 'admins',
  ]

 ],
'providers' => [
  'users' => [
   'driver' => 'eloquent',
   'model' => App\User::class,
  ],

  'admins' => [
   'driver' => 'eloquent',
   'model' => App\Admin::class,
  ],

  // 'users' => [
  //  'driver' => 'database',
  //  'table' => 'users',
  // ],
 ],

第二步:数据库方面

1 新建admins表,作为后台用户表

Laravel 自带的Auth验证登录方法

其中remember_token 用于是否记住用户

2 在app目录下新建Admin.php 文件对应,文件名称取决于配置文件中的名称

<?php
namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{

 protected $fillable = [
  'username', 'password',
 ];

 protected $hidden = [ 
  //remember_token 字段用于记住我的功能
  'password', 'remember_token',
 ];

 public static $rules = [
  'username'=>'required',
  'password'=>'required'
 ];
}

Laravel 自带的Auth验证登录方法

第三步:控制器中auth的使用

Auth::guard('admin')->attempt($credentials)); 尝试登录
Auth::guard($guard)->guest();判断用户是否来宾,可用于中间件,判断用户是否登录,返回false,则已经登录,反之,跳转会登录页面
Auth::guard($guard)->user();获取已经登录的用户信息,注意在__construct()中无法获取,可以在中间件里面获取
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class AdminAuthMiddleware
{
 /**
  * Handle an incoming request.
  *
  * @param \Illuminate\Http\Request $request
  * @param \Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next, $guard = null)
 {
  //如果没有指定的话,默认 guard 是 web,
  //dump(Auth::guard($guard)->check()); 判断用户是否认证
  //Auth::guard($guard)->user() 获取用户信息
  //Auth::guard($guard)->guest() 是否是来宾
 if(Auth::guard($guard)->guest()){
 if($request->ajax() || $request->wantsJson()){
 return response('Unauthorized.', 401);
 }else{
 return redirect()->guest('admin/login');
 }
 }

  return $next($request);
 }
}
$credentials = $request->only('username', 'password');

   /**
    * 使用laravel自带的Auth登录
    * 1、密码使用的是hash加密 $crypt = password_hash($password, PASSWORD_DEFAULT);
    */
   if(Auth::guard('admin')->attempt($credentials)){
    return response()->json(['code' => 200, 'msg' => '登录成功']);
   }else{
    return response()->json(['code' => 403, 'msg' => '用户名或密码错误']);
   }

以上这篇Laravel 自带的Auth验证登录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
基于php 随机数的深入理解
Jun 05 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
php树型类实例
Dec 05 PHP
php上传文件常见问题总结
Feb 03 PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
laravel 使用auth编写登录的方法
Sep 30 #PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 #PHP
php面试实现反射注入的详细方法
Sep 30 #PHP
laravel5表单唯一验证的实例代码
Sep 30 #PHP
Laravel模糊查询区分大小写的实例
Sep 29 #PHP
基于laravel Request的所有方法详解
Sep 29 #PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 #PHP
You might like
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
JS 类型转换常见方法小结
2010/05/31 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
ReactJs设置css样式的方法
2017/06/08 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
Python学习小技巧之列表项的排序
2017/05/20 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
Python定时任务sched模块用法示例
2018/07/16 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
网络教育自我鉴定
2013/11/01 职场文书
工地门卫岗位职责
2013/12/30 职场文书
软件测试专业推荐信
2014/09/18 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python