【问题标题】:Laravel email verification in other model其他模型中的 Laravel 电子邮件验证
【发布时间】:2019-06-23 11:09:11
【问题描述】:

我需要对 cme​​ts 系统进行电子邮件验证。当客人创建评论时,他可以写电子邮件、姓名和评论正文。当用户发送评论时,我需要验证电子邮件他。如果他确认电子邮件,那么我需要发表评论。如何使用标准的 Laravel 电子邮件验证来做到这一点?我有模型Comment,并且我在表 cmets 列中有:emailemail_verified_at。也许我可以为模型Comment 实施特征电子邮件验证?我不需要检查用户是否验证了他的电子邮件地址。如果是,那么用户应该能够发表评论。我需要每条评论验证给他发电子邮件。 1 条评论 = 1 封经过验证的电子邮件(即使重复),我该怎么做?

在模型注释中,我尝试实现了 VerifyEmail:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class Comment extends Model implements MustVerifyEmail
{
    use Notifiable;

    // ...
}

但是接下来我需要做什么?在文档中只有一个中间件:-&gt;middleware('verified') 和这个用于用户模型,我如何发送通知电子邮件激活评论模型并为评论模型做中间件?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以简单地进行自定义验证。您可以添加 email_verified 布尔列并将其默认设置为 false。 制定一个路线和方法,将评论的 email_verified 值从 false 更改为 true。 在 cmets 显示页面中,您只显示 email_verified 列为 true 的 cmets。 现在,每当用户发表评论时,都会向他发送一封包含该评论 URL 的电子邮件,这会将该评论的 email_verified 更改为 true。

    这是基本过程,您可以使用 separate tabletokenlaravel Observer 使其更高效。

    【讨论】:

      【解决方案2】:

      我不会将电子邮件验证用于其他模型。

      为评论模型创建一个观察者,然后将经过验证的布尔值添加到评论的迁移表中。

      创建评论后,您的观察者将能够向客人触发通知。

      【讨论】:

      • 您能解释一下如何从电子邮件中触发布尔值设置为 true 吗?是否有开箱即用的令牌生成功能或类似功能?
      • 您可以使用令牌验证,我可能不会走那么远,只是将创建的时间变成一个时代,并将其与评论的 id 结合使用。例如id:timestamp 转换为 base64 并在验证时解码和拆分。
      • 也很抱歉我没有回答你的问题,我不相信有默认的令牌生成,如果你想这样做,你必须在数据库中创建另一个字段。
      • 感谢您的回复。我为需要它的人找到了一个示例代码:laracasts.com/discuss/channels/laravel/…
      猜你喜欢
      • 2019-10-15
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2021-02-15
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多