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 相关文章推荐
聊天室php&amp;mysql(一)
Oct 09 PHP
php部分常见问题总结
Mar 27 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
php使用PDO方法详解
Dec 27 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP实现的AES 128位加密算法示例
Sep 16 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
Python操作MySQL数据库9个实用实例
2015/12/11 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
python的等深分箱实例
2019/11/22 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
python如何对链表操作
2020/10/10 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
佳能德国网上商店:Canon德国
2017/03/18 全球购物
25岁生日感言
2014/01/13 职场文书
人事部专员岗位职责
2014/03/04 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
七一表彰大会简报
2015/07/20 职场文书
导游词之无锡梅园
2019/11/28 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
python 镜像环境搭建总结
2022/09/23 Python