2017-01-04 9 views
0

Ich habe eine URL wie http://localhost:8000/assessment/3/199Merge URL-Parameter und erzeugen eine verschlüsselte URL - Laravel 5.3

Wo 3 Zuweisungs-ID darstellt und 199 repräsentiert Beisitzer id, kurzum sie beide zwei Modelle darstellt.

Ich sende solche URL in E-Mail. Ich möchte zuerst die URL verschlüsseln und dann an die E-Mail senden.

ich URL möchte wie http://localhost:8000/assessment/ {einige lange Zufalls-string}

Also, ich möchte sowohl die Parameter fusionieren, um einen verschlüsselten String machen, in E-Mail, auf den Zugriff auf die URL entschlüsseln und beide bekommen tatsächliche Parameter.

Ich möchte eine Lösung, die Laravel verwendet, um das zu implementieren.

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

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

+0

Suchen Sie nach Paketen, die dies tun, bevor Sie fragen. – Kyslik

+0

@Kyslik Eigentlich habe ich bereits, aber keiner von ihnen bietet solche Merge und verschlüsseln Technik. Also, ich dachte, es wäre gut, einen eigenen zu erstellen. –

Antwort

0

So wie ich das angehen würde, ist durch manuell in einer Steuerung der Umsetzung: können diese verwenden. wie dies Generieren Sie die URL:

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

wie eine Route erstellen:

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

In der Steuerung:

public function decrypt($ciphertext){ 

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

} 

Natürlich, werden Sie mehr Integrität überprüft und einige Fehler müssen Handhabung, aber Sie bekommen wahrscheinlich die Idee.

+0

Danke, sieht gut aus. Ich verstehe nur nicht, dass der erste Teil des Codes, wo geht es? –