我想创建注册验证,
到目前为止,我已计划好,我的Users表应包含confirmation_code
列和confirmed
列。已确认的列的默认值为0(布尔值为false)。
我从注册创建新用户,并为他们分配confirm_code。
然后我通过电子邮件向他们发送验证路由的链接,该路由期望查询字符串中包含此confirmation_code。
处理验证请求的方法是检查查询字符串参数(confirmation_code)是否存在。
我的问题是,
如果不存在confirmation_code,我应该使用abort(404)方法吗?或抛出自定义异常?
public function verify($confirmation_code)
{
if ( ! $confirmation_code ) {
// abort(404)?
// or,
// throw new Exception?
关于何时使用中止方法的一些反馈也将受到赞赏。
答案 0 :(得分:1)
实际上,您可以选择在项目中实施哪种类型的错误处理和错误记录。
作为建议,我会说使用自定义异常来丢失字段异常。是一个更好的主意。您可以在给定链接中阅读有关404错误的更多信息:
有关错误记录的更多详细信息,请参阅laravel文档。
答案 1 :(得分:0)
要遵循一条非常简单的规则。
如果用户可以更正丢失的字段,请在视图中输入错误。
如果用户无法更正缺少的字段,则抛出异常。您如何记录这取决于您,您可能需要或可能不需要告诉用户“发生了不好的事情”,具体取决于具体情况。
如果用户正在查找的资源不存在,或者由于某种原因不应该存在于用户,请显示404.经典案例,在/admin
中转到路线而不登录。您可以也使用401,但这会产生误导,除非路线在后续请求中接受WWW-Authenticate
标题。
要点:
如果由于用户做错事情而出现问题,请告诉用户。
如果由于事情不符合预期而出现问题,请告诉您的日志并(可选)告诉用户。例外是封装所有这些的好方法。
如果某些内容不存在,或者不应该在那里,除非用户更改了关于他们自己或请求的内容,请显示404.