2016-01-17 7 views
7

मैं अपनी वेबसाइट पर लॉग इन करने के लिए लार्वेल में प्रदान किए गए मूल HTTP प्रमाणीकरण का उपयोग कर रहा हूं। हालांकि, जब मैं Auth::Check() फोन मैं हमेशा झूठी प्रतिक्रिया भले ही मैं में लॉग इन कर रहा हूँ के रूप में मिलता है।लार्वेल बेसिक HTTP एथ चेक रिटर्निंग झूठी

Auth::Check() बुनियादी प्रमाणीकरण मॉडल के साथ और यदि नहीं काम नहीं करता, वहाँ बुनियादी प्रमाणीकरण जांच करने के लिए किसी भी तरह से है यदि कोई उपयोगकर्ता लॉग इन है?

यह मेरे उपयोगकर्ता वर्ग है:

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'email', 'password', 
    ]; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function getRememberToken() 
    { 
     return $this->remember_token; 
    } 

    public function setRememberToken($value) 
    { 
     $this->remember_token = $value; 
    } 

    public function getRememberTokenName() 
    { 
     return 'remember_token'; 
    } 
} 

यह है जहाँ मैं

$this->middleware('auth.basic', ['only' => ['create', 'store', 'edit', 'update', 'destroy']]); 

उपयोग करने के लिए प्रमाणीकरण फ़िल्टर सेट कोड सेगमेंट है, और ये मेरे Auth::Check() कॉल है (हमेशा 0 प्रिंट):

public function show($id) 
{ 
    echo \Auth::check() ? '1' : '0'; 
    die(); 
    #....... 
} 

मेरे मार्गों: Routes

+0

क्या आपने https://laravel.com/docs/5.1/authentication#http-basic- प्रमाणीकरण से चरणों का पालन किया था? –

+0

एथ :: चेक बिल्कुल उपयोग किया जाता है, क्या आप अपना कोड पोस्ट कर सकते हैं? –

+0

@LiamPotter ऐसा लगता है कि आप पहले से ही मिडलवेयर का उपयोग कर प्रमाणीकरण की जांच कर रहे हैं। आप इसे फिर से नियंत्रक में क्यों देख रहे हैं? यदि आप प्रमाणित नहीं हैं, तो लैरावेल आपको नियंत्रक विधि के अंदर नहीं जाने देगा। – parrker9

उत्तर

3

यह 5.2 संस्करण में बदल गया।

यदि आप सत्र, सीएसआरएफ, कुकी एक्सटी का उपयोग करेंगे। आप उपयोग करना चाहिए "वेब" अपने मार्गों में इस तरह मिडलवेयर:

Route::group(['middleware' => ['web']], function() { 
// 
}); 

और आप अपने प्रोजेक्ट में देख सकते हैं नए kernel.php फ़ाइल इस तरह है:

/** 
* The application's route middleware groups. 
* 
* @var array 
*/ 
protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
], 

'api' => [ 
    'throttle:60,1', 
], 
]; 

और जानकारी: https://laravel.com/docs/5.2/releases

+0

जब मैं एक नियंत्रक को रूट करता हूं और वेब मिडलवेयर के माध्यम से देखता हूं तो यह सभी Authenticate.php पर नहीं मारा जाता है और यह उपयोगकर्ता को लॉग इन और प्रमाणित किए बिना नियंत्रक खोलने की अनुमति देता है। मैं डेटाबेस सत्र का उपयोग करता हूं, लेकिन मैंने एक ही परिणाम के साथ फाइलों का भी प्रयास किया है। – mal

+0

यह मेरे लिए तब तक काम नहीं करता जब तक कि मैंने "वेब" मार्ग समूह के अंदर "एथ" मिडलवेयर के साथ कोई मार्ग नहीं रखा है: रूट :: समूह (['middleware' => ['web']], function() { रूट :: प्राप्त करें ('/ डैशबोर्ड', ['मिडलवेयर' => 'ऑथ', 'उपयोग' => 'डैशबोर्ड @ इंडेक्स']); }); – mal

संबंधित मुद्दे