2017-01-04 3 views
0

У меня есть URL как http://localhost:8000/assessment/3/199параметров слияния URL и генерировать шифрованный URL - Laravel 5.3

Где 3 представляет присвоения идентификационного номера и 199 представляет асессор идентификатор, короче они оба представляют две модели.

Я отправляю такой URL-адрес в адрес электронной почты. Я хочу сначала зашифровать URL-адрес, а затем отправить его по электронной почте.

Я хочу, чтобы URL, как http://localhost:8000/assessment/ {некоторые сверхдлинной случайных строки}

Итак, я хочу, чтобы объединить оба параметры, сделать зашифрованную строку, отправить в адрес электронной почты, на доступ к URL, его расшифровать и получить как фактические параметры.

Я бы хотел использовать решение, которое использует Laravel для его реализации. Может использовать эти:

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

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

+0

Искать пакеты, которые делают это перед запросом. – Kyslik

+0

@ Kyslik На самом деле, я уже это сделал, но ни один из них не предоставляет такую ​​технологию слияния и шифрования. Итак, я подумал, что было бы хорошо создать пользовательский. –

ответ

0

Путь я бы решить это, это вручную его реализации в контроллере. Генерирование URL вроде этого:

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

Создать маршрут как:

Route::get('/assessment/{ciphertext}', '[email protected]'); 

В контроллере:

public function decrypt($ciphertext){ 

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

} 

Конечно, вам потребуется больше целостности проверки и некоторые ошибки но вы, вероятно, получите эту идею.

+0

Спасибо, хорошо выглядит. Я просто не понимаю, что, первая часть кода, куда она идет? –