【问题标题】:Merge URL parameters and generate a encrypted URL - Laravel 5.3合并 URL 参数并生成加密 URL - Laravel 5.3
【发布时间】:2017-05-18 15:47:44
【问题描述】:

我有一个类似http://localhost:8000/assessment/3/199 的网址

其中3代表assignment id,199代表asasor id,总之都代表两个model。

我正在将此类 URL 发送到电子邮件中。我想先加密 URL,然后将其发送到电子邮件。

我想要像http://localhost:8000/assessment/{some-long-random-string}这样的网址

所以,我想合并两个参数,制作一个加密字符串,发送到电子邮件,在访问 URL 时解密它并获取两个实际参数。

我想要一个使用 Laravel 来实现的解决方案。 可能正在使用这些:

https://laravel.com/docs/5.3/encryption

https://laravel.com/docs/5.3/hashing

【问题讨论】:

  • 在询问之前搜索执行此操作的包。
  • @Kyslik 实际上,我已经这样做了,但它们都没有提供这种合并和加密技术。所以,我认为创建自定义的会很好。
  • 我觉得这很有趣:paragonie.com/blog/2015/09/…

标签: laravel encryption laravel-5.3 url-encoding


【解决方案1】:

我解决这个问题的方法是在控制器中手动实现它。 像这样生成 URL:

$url = URL::action('AssessmentController@decrypt', json_encode([
    'assessment' => $assessment_id, 
    'assessor' => $assessor_id
]);
//now, use $url in your email

创建如下路线:

Route::get('/assessment/{ciphertext}', 'AssessmentController@decrypt');

在控制器中:

public function decrypt($ciphertext){

    $params = json_decode(decrypt($ciphertext));
    return $this->getAssessment($params['assessment'], $params['assessor']);

}

当然,您将需要更多的完整性检查和一些错误处理,但您可能明白了。

【讨论】:

  • 谢谢,看起来不错。我只是不明白一件事,代码的第一部分,它去哪里了?
猜你喜欢
  • 2015-01-15
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2018-04-21
  • 2014-12-30
  • 2011-12-06
相关资源
最近更新 更多