为什么在Laravel 8中的hasValidSignature中signedRoute总是为假,*

js4nwp54  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(91)

我正尝试添加用户只通过注册一个唯一的网址。

问题是register函数中的hasValidSignature()总是返回false,无论我是直接从/register还是生成的url进入。

我的寄存器控制器:

public function register(Request $request) {

        dump($request);
        dump($request->_token);
        dd($request->hasValidSignature());
        abort_unless($request->hasValidSignature(), 403, 'That link has expired or is no longer valid!');

      }

我的索引,我在其中生成用于注册的唯一URL:

public function index()
    {

        Gate::authorize('admin-level');
        $users = User::where('admin', '0')->get();
        $url = URL::temporarySignedRoute(
            'register',
            now()->addMinutes(30)
        );
        return view('backend/user/index', ['users' => $users], ['url' => $url]);
    }

或者只生成url:

$url = URL::temporarySignedRoute(
            'register',
            now()->addMinutes(30)
        );

所有的事情都像文档里一样,这就是为什么我对这个很生气。我能做些什么来使网址更好。
要么是我的hasValidSignature有问题(我从来没有更改过)
或者我的网址。

我尝试了许多不同的方法,结果总是一样。

有趣的是,它在实施后就起作用了,现在却没有了。

我用php artisan ui:auth重新制作了所有的auth。除非使用hasValidSignature,否则整个注册工作正常。

我的用户只能从唯一的网址注册,我不能绕过这一点。

jjhzyzn0

jjhzyzn01#

有时查询中还包括其他参数...
因此,您必须忽略它们:

$request->hasValidSignatureWhileIgnoring(['param1', 'paramX'])

相关问题