合并URL参数并生成加密的URL - Laravel 5.3

时间:2017-01-04 11:09:23

标签: laravel encryption laravel-5.3 url-encoding

我有一个像http://localhost:8000/assessment/3/199

这样的网址

其中3代表赋值id,199代表评估者id,简而言之,它们都代表两个模型。

我正在将此类网址发送到电子邮件中。我想首先加密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

1 个答案:

答案 0 :(得分:0)

我要解决这个问题的方法是在控制器中手动实现它。 生成如下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']);

}

当然,您需要更多的完整性检查和一些错误处理,但您可能会有这个想法。