2017-04-14 15 views
0

内の1件のログがだから、最初に私は私のタイトルは誤解を招くようではありませんご希望の場合。私のタイトルが質問に合っているかどうか教えてください。認証にカスタム属性::ユーザーを追加する方法()

QUESTION。 私はLaravel 5.3を使用していると私は、認証に属性「役割」を追加する方法を見つけようとしている::ユーザーを()

Auth::user()->role. 

役割にフィールドではありませんように私はそれにアクセスできるように、認証に使用されるユーザーテーブルですが、取得するために計算した値です。私が尋ねる理由は、値を必要とするたびにロールを計算するのではなく、代わりに認証が成功したときに設定して再利用するということです。

どうすればいいですか?

それとも私は一度それを計算し、それを再利用できるように、ユーザーがログインしている時間外を通じて価値を持続することができます任意の方法はありますか?

+0

すべてのリクエストまたは再読み込み時にAuth :: user()が再作成されるので、セッション中alculated役割は、その役割は、そのミドルウェアでの認証にロール::ユーザー()オブジェクトを添付して存在するかどうかを確認するミドルウェアを作成...私はちょうど上のドキュメントを読んだので、それは – razzbee

+0

オーケー役に立てば幸いミドルウェアとこれは私が探しているもののように見えます。しかし、Auth :: user()に余分な属性を付ける方法を教えてもらえますか、私に正しい方向を教えてください。それは "$ request-> user() - > role = 23"のようなものですか? –

答えて

1

あなたがこれを達成することができます最善の方法は、あなたのUser.phpモデルである:

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

    class User extends Authenticatable 
    { 
     use Notifiable; 

     /** 
     * The attributes that are mass assignable. 
     * 
     * @var array 
     */ 
     protected $fillable = [ 
      'name', 'email', 'password', 
     ]; 

     /** 
     * The attributes that should be hidden for arrays. 
     * 
     * @var array 
     */ 
     protected $hidden = [ 
      'password', 'remember_token','is_admin', 
     ]; 

     protected function getRole(){ 


      if(\Session::has("role")){ 
      return Session::get("role"); 
     }else{ 
      //calculate and save role in session 
     } 

    }//end get Role 

}//end class 

ので、あなたは、ログイン後のセッションで役割を保存していることを確認し、この

Auth::user()->getRole(); 

のようにそれをチェックしますgetRoleはそれを取得してuser()オブジェクトにアタッチします。これはミドルウェアをも必要としません これは役に立ちます。

+0

これは、ユーザーがログアウトしたときにセッション変数をフラッシュします。はい? –

+0

気にしないでください。最後の部分が分かりました。あなたの解決策を試してみましょう。 –

+0

これは、 "定義されていないメソッド照会\データベース\クエリ\ビルダー:: getRole()"アイデアを返しますか? –

関連する問題