手机版

Laravel6.2中用户登录新密码确认流程的详细说明

时间:2021-08-19 来源:互联网 编辑:宝哥软件园 浏览:

Laravel昨天发布了v6.2版本,增加了新的密码确认功能,可以让你在访问路由前要求登录用户重新输入密码。

当您执行敏感操作时,该功能类似于GitHub确认对话框。您可以在Laravel中轻松设置它,因此让我们尝试新功能,以便您可以更好地了解它的工作原理:

建立

首先,为了更直观地理解这个新函数,我们创建了一个新的Laravel应用程序:

Lara vel new confirm-app CD confirm-app composer require laravel/ui-dev正如大家所知,make:auth命令在Laravel 6中已经被删除,同样的功能也迁移到了Lara vel/ui的官方扩展包中。让我们使用新命令来生成与用户身份验证相关的代码:

PHP artisan uivue-auth yarn安装yarn dev接下来,我们配置SQLite数据库(当然,你可以选择你想用的数据库):

Touch database/database.sqlite我们已经创建了Laravel在使用sqlite驱动程序时所需的默认配置文件,但是您仍然需要更新。env文件以确保数据库连接和路径正确:

DB_CONNECTION=sqlite#.#使用sqlite驱动程序的默认路径# DB_DATABASE=laravel接下来,让我们运行迁移并创建一个测试用户:

Php artisan migrate我们可以通过factory()方法在控制台中创建一个测试用户:

PHP artisan tinker $ user=factory(App \ user : class)-create([.password'=bcrypt('secret '),电子邮件'='[emailprotected]'.]);写控制器

假设您希望用户在查看管理操作(如添加SSH密钥)之前重新验证他们的密码。我们希望用户在配置的窗口中重新输入密码(默认值为三小时)。

我们将创建一个假的/设置/ssh/创建路由。在这条路线中,我们需要一个新的密码。在用户创建新的密钥:之前,确认中间件

PHP artisan制作:控制器设置/ssh控制器接下来,在这个控制器中创建create() :方法

命名空间App \ Http \ Controllers \设置;使用App \ Http \ Controller \ Controller;使用照明\ Http \ Request类SSHController扩展了Controller { public function create(){ return view(' secret ');}}我们将把secret模板存根化,放在view path resources/view/secret . blade . PHP :的根目录下。

@ extends(' layouts . app ')@ section(' content ')div class=' container ' div class=' row alignment-content-center ' div class=' col-MD-8 ' h1添加新的SSH密钥/H1他的页面只有在密码确认后才会显示。/p/div/div/div @ endsection编码时,应该将文件auth/password/confirm . blade . PHP复制到项目中。您可以在这里复制文件: ui/confirm.stub。复制此文件并将其添加到项目的以下路径:

资源/视图/身份验证/密码/确认。blade.php接下来,我们需要定义路由。在routes/web.php文件的最后,我说我们需要这个中间件:

route : namespace(' Settings ')-中间件([' auth '])-组(function(){ route : get('/Settings/ssh/create ','[email protected]')-中间件(' password . confirm ');});注意:通常,您可以聚合所有需要通过身份验证中间件进行身份验证的路由。在这个演示中,我们在设置名称空间中创建了一个控制器。

有了它,一旦您登录,您将被重定向到/home。在那里,导航到/settings/ssh/create,然后提示您输入密码:

如果您遵循本教程,请输入secret,提交表单,然后进入创建视图。确认密码后,无需提示即可刷新此页面。

使用新的ddd()辅助函数,并将其添加到您的SSHController:create()方法中,该方法将在下次提示时确定auth.password _ confirmed _ at中的会话值:

公共函数create(){ DDD(session(' auth '));返回视图(“机密”);}

这是最后一次验证密码。默认情况下,3小时内不会反复提醒用户再次验证密码。当然,您可以通过修改config('auth.password_timeout ')配置项(该配置项在Laravelv6.2.0版本6.2.0的config/auth.php配置文件中定义)进行自定义。

了解更多信息

感谢Dries Vints为我们带来了包含在Laravel版本中的这一伟大的新功能。您可以通过请求#5129了解更多关于中间件实现的细节。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:Laravel6.2中用户登录新密码确认流程的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。