mysql 安全登录注册_安全系列 —— 登录认证

简介注:想要快速上手?只需要在新安装的 Laravel 应用下运行php artisan make:auth和php artisan migrate,这两个命令会生成用户登录注册所需要的所有东西,然后在浏览器中访问http://your-app.test/register即可。Laravel 中实现登录认证非常简单。实际上,几乎所有东西 Laravel 都已经为你配置好了。配置文件位于...
摘要由CSDN通过智能技术生成

简介

注:想要快速上手?只需要在新安装的 Laravel 应用下运行 php artisan make:auth 和 php artisan migrate,这两个命令会生成用户登录注册所需要的所有东西,然后在浏览器中访问 http://your-app.test/register 即可。

Laravel 中实现登录认证非常简单。实际上,几乎所有东西 Laravel 都已经为你配置好了。配置文件位于 config/auth.php,其中包含了用于调整认证服务行为的、文档友好的选项配置。

在底层代码中,Laravel 的认证组件由“guards”和“providers”组成,Guard 定义了用户在每个请求中如何实现认证,例如,Laravel 通过 session guard 来维护 Session 存储的状态和 Cookie。

Provider 定义了如何从持久化存储中获取用户信息,Laravel 底层支持通过 Eloquent 和数据库查询构建器两种方式来获取用户,如果需要的话,你还可以定义额外的 Provider。

如果看到这些名词觉得云里雾里,大可不必太过担心,因为对绝大多数应用而言,只需使用默认认证配置即可,不需要做什么改动。

注:通俗点说,在进行登录认证的时候,要做两件事,一个是从数据库存取用户数据,一个是把用户登录状态保存起来,在 Laravel 的底层实现中,通过 Provider 存取数据,通过 Guard 存储用户认证信息,前者主要和数据库打交道,后者主要和 Session 打交道(API 例外)。

数据库考量

默认情况下,Laravel 在 app 目录下包含了一个 Eloquent 模型 App\User,这个模型可以和默认的 Eloquent 认证驱动一起使用。如果你的应用不使用 Eloquent,你可以使用 database 认证驱动,该驱动使用 Laravel 查询构建器与数据库交互。

为 App\User 模型构建数据库表结构的时候,确保 password 字段长度至少有60位。保持默认字符串长度(255)是个不错的选择。

还有,你需要验证 users 表包含了 remember_token,该字段是个可以为空的字符串类型,字段长度为100,用于在登录时存储应用维护的“记住我” Session 令牌。

ee6fb69548be8d1915aa3b349a4219b1.png

快速入门

Laravel 提供了几个预置的认证控制器,位于 App\Http\Controllers\Auth 命名空间下, RegisterController 用于处理新用户注册, LoginController 用于处理用户登录认证, ForgotPasswordController 用于处理重置密码邮件链接, ResetPasswordController 包含重置密码逻辑,每个控制器都使用 trait 来引入它们需要的方法。对很多应用而言,你根本不需要修改这些控制器:

224d90a2f69df9cd0a792da8ead21ab0.png

路由

Laravel 通过运行如下命令可快速生成认证所需要的路由和视图:

php artisan make:auth

新安装的应用运行该命令会生成布局、注册和登录视图,以及所有的认证路由,同时生成 HomeController 用于处理应用的登录请求。

打开 routes/web.php 路由文件会发现新增了两行:

3a4bc99c570fdf1d0794019f3fdf9d1b.png

登录注册相关路由都定义在上面 Auth::routes() 方法内。

注:如果你的应用不需要注册,可以通过移除新创建的 RegisterController 控制器并编辑路由定义来禁止注册:Auth::routes(['register' => false]);。

视图

正如上面所提到的,php artisan make:auth命令会在 resources/views/auth 目录下创建所有认证需要的视图。

make:auth 命令还创建了 resources/views/layouts 目录,该目录下包含了应用的基础布局文件。所有这些视图都使用了 Bootstrap CSS 框架,你也可以根据需要对其进行自定义。

认证

现在你已经为自带的认证控制器设置好了路由和视图,接下来我们来实现新用户注册和登录认证。你可以在浏览器中访问定义好的路由,认证控制器默认已经包含了注册及登录逻辑(通过trait)。

我们先来注册一个新用户,在浏览器中访问 http://blog.test/register,即可进入注册页面:

1d007f634539fd82b80186e1fdb8c085.png

填写表单点击「Register」按钮即可完成注册。注册成功后页面跳转到认证后的页面 http://blog.test/home:

77f3ad13807ce8b51db80ab530461d59.png

要测试登录功能,可以先退出当前用户,然后访问登录页面 http://blog.test/login:

1a959edf105af7dc32f2b7cd08cabe96.png

使用我们之前注册的信息登录成功后,同样会跳转到 http://blog.test/home。

自定义路径

我们已经知道,当一个用户成功进行登录认证后,默认将会跳转到 /home,你可以通过在 LoginController、RegisterController 和 ResetPasswordController 中定义 redirectTo 属性来自定义登录认证成功之后的跳转路径:

protected $redirectTo = '/';

接下来,你需要编辑 RedirectIfAuthenticated 中间件的 handle 方法来使用新的重定向 URI。

如果重定向路径需要自定义生成逻辑可以定义一个 redirectTo 方法来取代 redirectTo 属性:

protected functionredirectTo()

{return '/path';

}

注:redirectTo 方法优先级大于 redirectTo 属性。

自定义用户名

默认情况下,Laravel 使用 email 字段进行认证,如果你想要自定义认证字段,可以在 LoginController 中定义 username 方法:

public functionusername()

{return 'username

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值