代码之家  ›  专栏  ›  技术社区  ›  Magearlik

Laravel加密和显示

  •  0
  • Magearlik  · 技术社区  · 7 年前

    我有一个名为Secret的对象,我希望对两个字段“Secret_title”和“Secret_text”进行加密。当用户登录时,我想在表中显示他们的秘密列表。我在Secret类中使用setter和getter来加密和解密信息,但是当我在视图中打印Secret_标题和Secret_文本时,它仍然是加密的。这是我的目标:

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Support\Facades\Crypt;
    use Illuminate\Contracts\Encryption;
    
    class Secret extends Model
    {
        protected $fillable = [
            'user_id',
            'secret_title',
            'secret_text',
      ];
    
      public function getSecretTitleAttribute()
      {
        return Crypt::decrypt($this->attributes['secret_title']);
      }
    
      public function getSecretTextAttribute()
      {
        return Crypt::decrypt($this->attributes['secret_text']);
      }
    
      public function setSecretTitleAttribute($value)
      {
        $this->attributes['secret_title'] = Crypt::encrypt($value);
      }
    
      public function setSecretTextAttribute($value)
      {
        $this->attributes['secret_text'] = Crypt::encrypt($value);
      }
    
    }
    

    在我使用的控制器中:

    public function showUserSecrets()
        {
            $user_id = Auth::id();
            $secrets = DB::table('secrets')->where('user_id', $user_id)->get();
            return view('secret.show', compact('secrets'));
        }
    

    在我看来:

        @foreach ($secrets as $secret)
         <tr>
             <td>{{ $secret->id }}</td>
             <td>{{ $secret->secret_title }}</td>
             <td>{{ $secret->created_at }}</td>
             <td><a href="{{ route('secret.show', $secret->id) }}" class="button">View</a></td>
        </tr>
       @endforeach
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   Jack    7 年前

    结果不会加载到您的应用程序中 Secret 模型,因此永远不会使用解密属性。

    替换:

    $secrets = DB::table('secrets')->where('user_id', $user_id)->get();
    

    与:

    use App\Secret;
    
    // ...
    
    $secrets = Secret::where('user_id', $user_id)->get();
    
    推荐文章