Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

栏目: PHP · 发布时间: 6年前

内容简介:我们先来看

不同认证方式

我们先来看 config/auth.php

  • provider

    • providers 数组让我们可以配置一个提供者,每个提供者可以选择不同的 driver.driver可以选择eloquent 或者 database ,
    • 对应的驱动之后选择对应的配置项,eloquent:model,database:table
  • guard

    • 在拥有provider之后我们可以配置guards 守卫,守卫可以配置一个驱动者和一个提供者
    • 提供者就是我们上面配置的provider
    • 而驱动者则有session(session认正),token(token认正)可供选择
    • 默认api使用的是token认正,而web用户使用session认正

session认正

Auth::attempt(['email' => $email, 'password' => $password])
Auth::guard()->check()

token认正

\vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

  • 然后我们还要在数据库里建立相应的字段web_token

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

注:如果使用 redis 等nosql保存web_token的话也是需要web_token的,为了使 laravel 自带的Auth门面可以使用
  • 建立完字段以后就可以写登录方法了:

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

  • 在这里还是使用了redis去保存token,便于设置token的过期时间

    • 至于为什么还要保存在数据库里,在注销或者token过期的时候还要更新数据库的token,是因为Auth底层获取user的方法是从数据库进行获取的
    • 贴上源码来看一波
  • 首先还是 \vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php 文件

    • 这里插一下,如果是想把token放在header头里传值,还要在 TokenGuard.php 加入这一段

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

Auth::user()
\vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

Auth::guard('user')->user()

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

  • 当我们调用 Auth::user( ) 时会调用 \vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php 里的

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

  • 然后我们找到 retrieveByCredentials() 这个方法在 vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

Auth::user()

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

  • 把新建的middleware加入 kernel.php

Laravel - Auth验证流程以及guard守卫和自定义驱动driver驱动,使用web-token验证

except()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Rails

Head First Rails

David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99

Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具