Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
laravel中guard是什么_创想鸟

laravel中guard是什么

在laravel中,guard是一个用于用户认证的插件;guard的作用就是处理认证判断每一个请求,从数据库中读取数据和用户输入的对比,调用是否登录过或者允许通过的,并且Guard能非常灵活的构建一套自己的认证体系。

laravel中guard是什么

本文操作环境:Windows10系统、Laravel5.4版、Dell G3电脑。

laravel中guard

其实无论是Guard还是Provide,你都可以理解为。某个特定功能的插件。

他的作用是处理一个认证,来判断每个请求、调用是否是登录过,或者允许通过的,

什么是Guard

在Laravel/Lumen框架中,用户的登录/注册的认证基本都已经封装好了,开箱即用。而登录/注册认证的核心就是:

用户的注册信息存入数据库(登记)

从数据库中读取数据和用户输入的对比(认证)

上述两步是登录/注册的基本,可以看到都会涉及到数据库的操作,这两步框架底层已经帮我们做好了,而且考虑到了很多情况,比如用户认证的数据表不是user表而是admin_user,认证字段是phone而不是email,等等一些问题都是Guard所要解决的,通过Guard可以指定使用哪个数据表什么字段等,Guard能非常灵活的构建一套自己的认证体系。

通俗地讲,就是这样:Guard就像是小区的门卫大叔,冷酷无情,不认人只认登记信息。

进小区之前大叔需要先检查你的身份,验证不通过大叔就不让你进去。

如果是走路/骑车进去,大叔1需要检查你的门禁卡,他拿出记录了小区所有业主门禁卡信息的本子查看你这个门禁卡信息有没有在这个本子上;

如果你开车进去,大叔2就从记录了所有业主车牌号的本子中检查你的车牌号,所以新业主要小区了需要告知门卫大叔们你的门禁卡信息或者车牌号,要不然大叔2不让你进。

如果是物业管理员要进小区,门卫大叔3也只认登记信息,管理员出示他的管理员门禁卡,门卫大叔就会检查记录了管理员门禁卡信息的本子。

上面讲的对应了框架中的多用户认证:

走路/骑车的人 -> 门禁卡

开车的人 -> 车牌号

物业管理员 -> 门禁卡

门禁卡和车牌号都是不同的认证方式,而门卫大叔查看的本子就对应了不同数据库中的用户信息,这样讲是不是更容易理解了。

Lumen/Laravel中以中间件(Middleware)的方式提供了非常灵活的认证,通过简单的配置就可以切换多个认证。

工作流程图如下:

14.png

从图中可以看到,一个Guard会涉及到三个部分,分别是:

慧中标AI标书 慧中标AI标书

慧中标AI标书是一款AI智能辅助写标书工具。

慧中标AI标书 120 查看详情 慧中标AI标书

Guard实现本身

User Provider用户提供者,指定哪个数据表以什么方式获取(eloquent/database)

Authenticatable接口规定那些东西可以被认证,就是实现它的接口嘛

扩展知识:

Guard我的理解他应该是一个类似用户认证的东西。

在 config/auth.php 中有配置 guards 的参数,可以看出来 web 和 api 是两个 guards。

在平时的业务中api可能更多的是用户前台用户的操作,而web更多的是后台用户的操作。

默认配置都是指向 users 的 provider。

/*    | Authentication Guards    |认证关卡    | Next, you may define every authentication guard for your application. Of course, a great default configuration has been defined for you here which uses session storage and the Eloquent user provider.    |接下来,你可能要为你的应用定义每个认证关卡。当然,已经为你定一了一个很不错的默认配置。这里会使用会话储存和用户模型    | All authentication drivers have a user provider. This defines how the users are actually retrieved out of your database or other storage mechanisms used by this application to persist your user's data.    |所有的认证驱动都有一个用户提供者。这里定义了怎么实际上怎么从你的数据库或者其他储存机制中取出用户。以便应用开保持你的用户数据    | Supported: "session", "token"    |可选驱动:"session", "token"    */'guards' => [        'web' => [            'driver' => 'session',            'provider' => 'users',        ],        'api' => [            'driver' => 'token',            'provider' => 'users',        ],    ],

接下来看看 provider 都有什么配置。

  /*    | User Providers    |用户提供者    | If you have multiple user tables or models you may configure multiple sources which represent each model / table. These sources may then be assigned to any extra authentication guards you have defined.    | 如果你有多个用户表或用户模型,你可以配置多个代表用户表或模型的资源。这些资源可能被分配给应用中你定义的其他认证关卡    | Supported: "database", "eloquent"    |    */ 'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => AppUser::class,        ],        // 'users' => [        //     'driver' => 'database',        //     'table' => 'users',        // ],    ],

在 providers 中有刚才看到的 users 配置了吧,这个就是配置laravel的用户组,因为前台和后台用户在一般的情况下是分开操作的。所以就可以在这里新建一个 admin 的用户组,并配置。开箱默认只用 users。

相对的每个用户组密码操作应该也是不同的,所以这里还有 password 的配置。

  /*    | Resetting Passwords    | 密码重置    | You may specify multiple password reset configurations if you have more than one user table or model in the application and you want to have separate password reset settings based on the specific user types.    | 如果你有多个用户模型或表,并且想对不同用户类型有特定的密码重置,则可以配置多个特定的重置密码    | The expire time is the number of minutes that the reset token should be considered valid. This security feature keeps tokens short-lived so they have less time to be guessed. You may change this as needed.    |这个获取时间是令牌过期的分钟数,这个安全措施可以保证令牌保持段时间有效,因此有更少的时间被破解。你可以按照需要更改。    */    'passwords' => [        'users' => [            'provider' => 'users',            'table' => 'password_resets',            'expire' => 60,        ],    ],

平时用于检测登陆用户,或者用户是否登陆我们都用的是 Auth::check() 就可以检测到,这是因为在使用默认配置的时候,guard自动配置为 users 用户组。

  /*    | Authentication Defaults    | 默认认证配置    | This option controls the default authentication "guard" and password reset options for your application. You may change these defaults as required, but they're a perfect start for most applications.    | 这个就是应用的默认认证关卡个重置密码,你可以按自己要求更改。但这是最适合一个新应用的配置    */    'defaults' => [        'guard' => 'web',        'passwords' => 'users',    ],

web guard下指向的就是 users 模型。

但是当如果我们有两个用户组,前台后台的时候怎么进行验证呢?

Auth::check() 是判断用户是否登录的方法,如果使用的默认用户系统,那这样使用没问题。

但是使用两组用户的话,就应该这样操作:

Auth::guard(‘api’)->check() 就是用来判断前台用户是否登录 Auth::guard(‘web’)->check() 就是用来判断后台用户是否登录

所以如果使用非默认用户组,则需要用guard来指定。

所以我们平时用的其实就是默认配置,写全就应该是 Auth::guard(‘web)->check()

【相关推荐:laravel视频教程】

以上就是laravel中guard是什么的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/624714.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
权威认证加持!凯迪仕联合德国莱茵TÜV  定义智能锁品质新高度
上一篇 2025年11月11日 08:16:31
计算机语言学哪个最好
下一篇 2025年11月11日 08:16:33

相关推荐

  • laravel中的契约(Contracts)和门面(Facades)有什么关系_Laravel契约与门面关系解析

    Laravel中的契约定义服务接口,门面提供静态代理,二者协同实现松耦合与易用性:契约通过依赖注入保障可测试性与类型安全,门面通过静态调用简化语法,实际底层对象通常实现对应契约,如Cache门面代理实现IlluminateContractsCacheRepository接口的实例,两者可依场景灵活选…

    2026年9月22日
    000
  • Laravel 8 登录后重定向到仪表盘:完整教程

    本教程详细阐述了在 Laravel 8 中实现用户登录后重定向到仪表盘的多种方法。我们将探讨 Laravel 默认的重定向机制、如何正确配置仪表盘路由及其中间件,并提供通过自定义 LoginController 实现精确重定向的示例代码。通过本文,您将全面掌握 Laravel 认证后的重定向流程,并…

    2026年9月22日
    500
  • MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构

    MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构

    要快速补全mysql字段注释,可通过sublime text编写python脚本实现自动化;1. 脚本获取表名,可手动输入或从当前sql文件解析;2. 通过subprocess调用mysql命令行获取show full columns信息;3. 解析输出内容,提取字段名和现有注释;4. 生成alte…

    2026年9月21日 • 用户投稿
    200
  • laravel集合有where方法吗

    有。Laravel集合中的where方法是一个非常有用的方法,用于在集合中筛选元素,根据指定的条件返回匹配的元素。使用where方法,可以根据不同的条件来过滤集合中的元素,where方法接受一个闭包作为参数,闭包中可以定义筛选的条件,闭包的每个元素都会传递给闭包。无论是对关联数组还是对对象集合,wh…

    2026年9月21日
    100
  • laravel如何判断请求类型

    laravel判断请求类型的方法:1、使用Request对象的方法,在Laravel中,每个请求都会通过Request对象进行处理。Request对象提供了一些有用的方法来判断请求类型;2、使用路由方法,在Laravel中,路由文件定义了应用程序的请求路由,可以使用路由方法来判断请求类型;3、使用中…

    2026年9月21日
    100
  • Laravel 8 登录后重定向到仪表盘的完整教程

    本教程详细介绍了在 Laravel 8 中实现用户登录后重定向到仪表盘的多种方法。我们将探讨如何利用 Laravel 内置的 $redirectTo 属性,以及如何通过重写 LoginController 中的 login 方法来实现自定义重定向逻辑。此外,教程还将重点讲解正确的路由配置和中间件使用…

    2026年9月21日
    100
  • laravel怎么监控错误

    laravel监控错误的方法:1、错误日志记录,Laravel内置了一个非常强大的日志系统,可以通过查看这些日志文件来了解应用程序中发生的错误;2、异常处理,Laravel提供了一个Exception类,可以用来捕获和处理异常;3、自定义错误页面,创建不同的视图文件,用于处理特定类型错误,当发生相应…

    2026年9月21日
    100
  • Laravel中的用户认证和授权:保护应用程序的安全和隐私

    Laravel中的用户认证和授权:保护应用程序的安全和隐私 引言:在众多Web应用程序中,用户认证和授权是保护应用程序安全和隐私的重要方面。Laravel作为一个流行的PHP框架,提供了一套强大而灵活的用户认证和授权系统。 本文将介绍Laravel中的用户认证和授权的基本概念和实现方式,并通过示例代…

    2026年9月21日
    000
  • laravel如何进行安全的SQL查询以防止注入_Laravel安全SQL查询防注入方法

    使用Eloquent和Query Builder并配合参数绑定可有效防止SQL注入。Laravel通过PDO预处理机制自动转义参数,确保安全;应避免拼接用户输入,尤其在whereRaw等原生语句中需使用?占位符绑定变量;所有用户输入均需验证,对ID类字段强制类型转换,并禁止将用户输入直接用于表名、字…

    2026年9月21日
    100
  • 使用Laravel进行微服务开发:构建可扩展的分布式系统

    使用Laravel进行微服务开发:构建可扩展的分布式系统 引言:在当今互联网时代,微服务架构已经成为了一种广泛应用的解决方案。而Laravel作为一种流行的PHP框架,提供了许多功能强大且易于使用的工具,使得开发人员能够轻松构建可扩展的分布式系统。本文将指导您如何使用Laravel进行微服务开发,并…

    2026年9月21日
    000
  • PHP面向对象编程:解决父类构造器传递值在子对象方法中为空的问题

    本文探讨了PHP中一个常见的面向对象编程问题:当父类构造器接收并初始化一个子对象时,如何确保该子对象内部的方法能正确访问到父类传递的值,避免出现null。文章将通过示例代码,详细介绍两种核心解决方案:通过控制器提供内部对象的访问器(Getter),以及采用依赖注入(Dependency Inject…

    2026年9月21日
    400
  • PHP框架中间件有什么用处_PHP框架中间件设计与实现

    PHP框架中间件是处理请求和响应的过滤器,用于实现身份验证、日志记录、CORS等通用逻辑,核心价值在于解耦和提升可维护性。通过定义中间件接口、具体中间件类及管道调度器可实现自定义中间件,如身份验证或CORS处理。在Laravel中可通过Kernel.php配置全局、分组或路由级中间件,执行顺序按注册…

    2026年9月21日
    100
  • Laravel中的CSRF保护原理和实现

    laravel通过在表单中嵌入唯一的token来实现csrf保护,确保请求来自应用程序。1)用户登录后生成并存储token于会话中。2)表单提交时,laravel检查token是否匹配,若不匹配则拒绝请求。 在Laravel中,CSRF(跨站请求伪造)保护是一个关键的安全功能,那么它是如何工作的呢?…

    2026年9月21日
    100
  • Laravel中的事件和监听器:解耦和优化应用程序交互

    Laravel中的事件和监听器:解耦和优化应用程序交互 引言:在开发应用程序时,我们经常会面临需要实现模块之间的通信和协作的情况。传统的方法是直接在代码中调用其他模块的方法或者通过回调函数进行通信。然而,这种紧密耦合的设计方式会导致代码的复杂性和维护性的下降。为了解决这个问题,Laravel框架提供…

    2026年9月21日
    000
  • PHP错误日志怎么查看_PHP错误日志定位与查看方法

    要查看PHP错误日志,首先确定php.ini中error_log路径,若未设置则检查Web服务器(如Apache/Nginx)错误日志;确保log_errors=On、error_reporting合理配置,并通过tail、grep等工具分析日志,结合框架日志和系统日志(如syslog)全面定位问题…

    2026年9月21日
    300
  • Laravel中的Blade模板引擎基础用法

    blade模板引擎在laravel中用于简化视图开发。具体使用方法如下:1.输出变量:{{ $variable }}。2.条件判断:@if、@else、@elseif。3.循环:@foreach。4.模板继承:@extends、@section、@yield。blade让视图代码更简洁易读,但需注意…

    2026年9月21日
    200
  • 使用Laravel构建RESTful API:实现现代化的后端开发

    使用Laravel构建RESTful API:实现现代化的后端开发 引言:在现代的Web开发中,构建RESTful API已经成为了一种主流的方式。RESTful API提供了一种灵活、可扩展的方式,用于与前端应用、移动应用或其他第三方服务进行交互。 Laravel是一款优秀的PHP框架,不仅提供了…

    2026年9月21日
    000
  • Laravel中的表单构建和验证:简化用户输入和数据处理

    Laravel中的表单构建和验证:简化用户输入和数据处理 在Web应用程序开发中,表单是用户与应用程序进行交互的重要方式之一。Laravel作为一种流行的PHP框架,提供了许多便捷的工具和功能来简化表单的构建和验证过程。本文将介绍如何使用Laravel来简化用户输入和数据处理过程。 一、表单构建 L…

    2026年9月21日
    000
  • Laravel应用的安全审计(Security Audit)方法

    进行安全审计对laravel应用至关重要,因为它能发现并修复安全漏洞,提升整体安全性和用户信任度。具体方法包括:1. 代码审查,确保无未过滤输入和弱密码;2. 配置文件安全性,保护敏感信息;3. 依赖管理,更新第三方包;4. 用户认证和授权,防止未授权访问;5. 日志和监控,检测异常行为。 在讨论L…

    2026年9月21日
    200
  • Laravel 8 登录后重定向到仪表盘的全面指南

    本文深入探讨了 Laravel 8 中用户登录后重定向到仪表盘的多种策略。我们将详细解析默认的重定向机制,包括 LoginController 和 RedirectIfAuthenticated 中间件,并重点介绍如何通过自定义登录逻辑实现精确的重定向控制,同时提供示例代码和常见问题排查建议,确保用…

    2026年9月21日
    200

发表回复

登录后才能评论
关注微信