2017-07-19 2 views
0

Ich bin auf der Suche nach der Möglichkeit, eine Session-ID zum Verschlüsseln einer ID der Datei zu verwenden und sie als temporäre URL zum Herunterladen zu verwenden.Laravel 5.4 Verschlüsselung durch Sitzungs-ID

Ich fand nur encrypt Funktion in Laravel, aber das ist nicht genau was ich will. Gibt es eine ähnliche Funktion, die eine Session-ID-Zeichenfolge für die Codierung und Decodierung verwenden könnte?

+0

ist hier alternative Weise http://laravel-recipes.com/recipes/105/encrypting-a-value –

+0

Warum wird nicht 'encrypt' Arbeit für Sie genau? Es verschlüsselt eine Zeichenfolge für Sie, die später mit entschlüsseln abgerufen werden kann. Was willst du sonst noch tun, das 'verschlüsseln' nicht macht? – user3158900

+0

Sie meinen, ich sollte Crypt :: setKey() verwenden? Aber es wird einen Schlüssel in der ganzen App ersetzen, richtig? das kann etwas kaputt gemacht werden – fiter

Antwort

0
make function in 
**Path - /app/Libraries/Scramble.php** 

**<Scramble.php>** 
<?php 

namespace App\Libraries; 

use Crypt; 
use Session; 
use Illuminate\Contracts\Encryption\EncryptException; 

class Scramble 
{ 

    public function __construct() 
    { 
    } 

    /** 
    * Encrypt the given value with session binding. 
    * 
    * @param string $value 
    * 
    * @return string 
    * 
    * @throws \Illuminate\Contracts\Encryption\EncryptException 
    */ 
    public static function encrypt($value) 
    { 
     if ($value === false) { 
      throw new EncryptException('Could not encrypt the data.'); 
     } 
     $manupulate_val = Session::getId()."##".config('app.key')."##".$value; 
     return Crypt::encrypt($manupulate_val); 
    } 

    /** 
    * Decrypt the given value. 
    * 
    * @param string $decrypted 
    * @return string 
    * 
    * @throws \Illuminate\Contracts\Encryption\DecryptException 
    */ 
    public static function decrypt($decrypted) 
    { 
     if ($decrypted === false) { 
      throw new DecryptException('Could not decrypt the data.'); 
     } 

     $sess_id   = Session::getId(); 
     $decryptedStr = Crypt::decrypt($decrypted); 
     $decryptedStrArr = explode("##", $decryptedStr); 

     if (is_array($decryptedStrArr) && $decryptedStrArr['0'] !== $sess_id) { 
      abort(400); 
     } 

     if (is_array($decryptedStrArr) && $decryptedStrArr['1'] !== config('app.key')) { 
      abort(400); 
     } 

     return $decryptedStrArr['2']; 
    } 
} 
**</scramble.php>** 

now you can call anywhere.... 

use App\Libraries\Scramble; 

$Yourid = 12345; 
$sessionIdWithencData = Scramble::encrypt($Yourid); 
$sessionIdWithdecData = Scramble::decrypt($sessionIdWithencData); 
dd($sessionIdWithdecData); 
========================================== 


i hope this is help full