当前位置:数据分析 > laravel

laravel

  • 发布:2023-10-01 19:43

php框架中的guard是什么 |Laravel
Laravel
php框架-Laravel
QQ群消息源码,ubuntu系统无法安装,打印tomcat内存stack命令,湖南爬虫ip,如何降低宝塔php版本,地区seolzw
本文的运行环境:Windows 10系统,Laravel版本5.4,戴尔G3电脑。
自适应短视频php源码,ubuntu16麒麟,爬虫不规则表,php删除语句,eBay SEO分析lzw
guard
laravel中的asp sql网站源码,vscode太难用了,ubuntu网络卡修改、查看tomcat列表命令、爬虫请求、php软链接、南昌seo推广公司价格、网站浮动在线咨询、css欢迎页面模板下载lzw
其实无论是Guard还是Provide,你都能理解。用于特定功能的插件。

他的作用是处理一个身份验证,以确定每个请求或呼叫是否已登录或允许通过,

什么是Guard

在Laravel/Lumen框架中,用户登录/注册认证基本已经封装完毕,可以开箱即用。登录/注册认证的核心是:

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

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

以上两步是登录/注册的基础。可以看到都会涉及到数据库操作。框架底层已经帮我们做到了这一点,并且考虑到了很多情况。例如,用于用户认证的数据表不是用户表。是admin_user,认证字段是电话而不是电子邮件,其他问题都由Guard解决。通过Guard,你可以指定使用哪个数据表、哪些字段等。Guard可以非常灵活地构建自己的认证系统。

通俗地说,就是这样:Guard就像一个小区的看门人,冷酷无情,不认人,只认登记信息。

进入小区前,叔叔需要检查你的身份。如果验证失败,叔叔就不让你进去。

如果您是步行/骑自行车进来,1叔叔需要检查您的门禁卡。他拿出记录小区所有业主门禁卡信息的本子,看看这本子上有没有你的门禁卡信息;

如果你开车进去,二叔会从记录所有车主车牌号的书上查你的车牌号。所以,新业主搬进小区时,需要告知门卫叔叔你的门禁卡信息或者车牌号,否则叔叔2不会让你进去的。

如果物业经理要进入小区,门卫叔叔3只会识别登记信息。经理出示经理门禁卡,门卫叔叔会查看记录经理门禁卡信息的本子。

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

步行者/骑自行车者 -> 门禁卡

开车人->车牌号码

物业经理->门禁卡

门禁卡和车牌号是不同的认证方式,门卫看的书对应着不同数据库中的用户信息。这样是不是更容易理解呢?

Lumen/Laravel 以中间件的形式提供了非常灵活的身份验证,通过简单的配置即可切换多种身份验证。

工作流程图如下:

从图中可以看到,一个Guard由三个部分组成,分别是:

Guard 实施本身

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

Authenticatable接口规定了可以认证什么,就是实现它的接口

扩展您的知识:

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

config/auth.php中有配置guard的参数。可见web和api是两个守卫。

在日常业务中,API可能更多的是前端用户的操作,而web更多的是后端用户的操作。

默认配置指向用户的提供者。

/* |身份验证卫士|身份验证卫士|接下来,您可以为您的应用程序定义每个身份验证防护。当然,这里已经为您定义了一个很好的默认配置,它使用会话存储和 Eloquent 用户提供程序。 |下一步,您可能想要为您的应用程序定义每个身份验证级别。当然,我们已经为您设置了一个不错的默认配置。这里使用了会话存储和用户模型 |所有身份验证驱动程序都有一个用户提供程序。这定义了如何从数据库或该应用程序用来保存用户数据的其他存储机制中实际检索用户。用户提供商。这定义了如何从数据库或其他存储机制中实际检索用户。使应用程序可以保留您的用户数据|支持:“会话”、“令牌” |可选驱动程序: "session", "token" */'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users',],],

接下来我们看看provider有哪些配置?

 /* |用户提供商 |用户提供商 |如果您有多个用户表或模型,您可以配置代表每个模型/表的多个源。然后可以将这些源分配给您定义的任何额外的身份验证防护。 |如果您有多个用户表或用户模型,则可以配置多个代表用户表或模型的资源。这些资源可能会分配给您在应用程序中定义的其他身份验证级别 |支持:“数据库”、“雄辩” | */ 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model ' => App\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ],

在提供程序中,您拥有刚刚看到的用户配置。这是配置laravel的用户组,因为一般情况下,前端和后端用户是分开操作的。所以你可以在这里创建一个新的管理员用户组并进行配置。开箱即用,默认情况下仅使用用户。

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

 /* |重置密码 |密码重置 |如果应用程序中有多个用户表或模型,并且您希望根据特定用户类型拥有单独的密码重置设置,则可以指定多个密码重置配置。 |如果您有多个用户模型或表,希望对不同的用户类型进行特定的密码重置,可以配置多个特定的重置密码 |过期时间是重置令牌应被视为有效的分钟数。这种安全功能使令牌的寿命很短,因此它们被猜测的时间更少。您可以根据需要更改此设置。破解的时间越来越少了。您可以根据需要更改它。 */ 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ],

通常用于检测我们可以使用 Auth::check() 来检测登录的用户或者用户是否登录。这是因为使用默认配置时,guard会自动配置为users用户组。

 /* |身份验证默认值 |默认认证配置 |此选项控制应用程序的默认身份验证“防护”和密码重置选项。您可以根据需要更改这些默认值,但它们对于大多数应用程序来说是一个完美的开始。 |这是应用程序的默认身份验证级别和重置密码。您可以根据您的要求进行更改。但这是新应用程序最合适的配置 */ 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], 

Web Guard 下指向的用户模型。

但是当我们有前后两个用户组时如何验证呢?

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

但是如果你使用两组用户,你应该这样做:

Auth::guard('api')->check() 用于判断前端用户是否登录。 Auth::guard('web')->check() 用于判断是否登录后台用户已登录

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

所以我们平时使用的其实就是默认配置。完整写下来应该是Auth::guard(‘web)->check()

相关文章

最新资讯