为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel:使用带有斜线的哈希令牌进行自定义验证

Laravel:使用带有斜线的哈希令牌进行自定义验证

PHP
明月笑刀无情 2022-05-27 13:15:20
我正在尝试创建自己的自定义验证电子邮件,但似乎我在某个地方有错。该路线运行良好,但是当我在某处遇到带有“/”斜线的散列令牌时,它说找不到。我怎样才能避免这种情况?创建令牌$permission = new Permission();$permission->user()->associate($isPermitted_user);$permission->token = Hash::make(now());$permission->save();创建我的网址$permission = Permission::find($this->permission_id);    $permission_url = url('/permission/'.$permission->token);    $user = $permission->user;    $data = array(        'permission_url' => $permission_url,        'name' => $notifiable->name,        'user' => $user,    );网页.php  Route::get('/permission/{token}', 'PermissionsController@permission')->middleware('verified');
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

来自 Laravel 关于编码正斜杠的文档。

编码正斜杠

Laravel 路由组件允许除 / 之外的所有字符。您必须使用 where 条件正则表达式明确允许 / 成为占位符的一部分:

Route::get('search/{search}', function ($search) { return $search; })->where('search', '.*');

这意味着在您的情况下允许“/”成为占位符的一部分,您需要在令牌参数上使用 where 路由条件正则表达式:

 Route::get('/permission/{token}', 'PermissionsController@permission')->middleware('token')->where('token', '.*');

Inspired by the comment by lagbox


查看完整回答
反对 回复 2022-05-27
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

要删除 Hash 中的斜杠:

str_replace('/', '', Hash::make(now()));


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信