मैं Laravel 5.5 में मैन्युअल लॉगिन फ़ंक्शन का उपयोग करता हूं। लॉगिन में फंस गया। और सभी (5 प्रासंगिक) स्टैक लिंक की जांच करें और उस पर कोई सुराग नहीं मिला।

उपलब्धि है एक बार जब उपयोगकर्ता पंजीकृत हो जाता है, तो स्वचालित रूप से उस उपयोगकर्ता में साइन इन हो जाता है।


त्रुटि है

"टाइप एरर: इल्यूमिनेट \ ऑथ \ सेशनगार्ड :: लॉगिन () को पास किया गया तर्क 1 को इंटरफ़ेस इल्यूमिनेट \ कॉन्ट्रैक्ट्स \ ऑथ \ ऑथेंटिकेबल, स्ट्रिंग दी गई, जिसे सर्वर/विक्रेता/लारवेल/फ्रेमवर्क/src/इल्यूमिनेट/ऑथ/ऑथमैनेजर. php ऑन लाइन 294 "

if ($validator->fails()) {

//            $messages = $validator->messages();

            return Redirect::to('register')
                ->withErrors($validator)
                ->withInput();

        } else {

            $email = Input::get('email');
            $user = new user;
            $user->name     = Input::get('name');
            $user->email    = Input::get('email');
            $user->password = Hash::make(Input::get('password'));

            $user->save();
//            $userMail = $user->find($email);
            $userMail = User::where('email','=',$email)->first();
            Auth::login($userMail->email, TRUE);

क्या मैं गलत हूं। कृपया मेरा मार्ग दर्शन कीजिए।

20
Stack User 22 सितंबर 2017, 13:26

6 जवाब

सबसे बढ़िया उत्तर

लॉगिन फ़ंक्शन को Authenticatable प्रकार के उपयोगकर्ता की आवश्यकता होती है और आपने अभी email दिया है जो कि स्ट्रिंग है इसलिए आपको यह त्रुटि मिलती है, या तो Auth::loginUsingId($id); का उपयोग करें

 $user = User::where('email','=',$email)->first();
 Auth::loginUsingId($user->id, TRUE);

या केवल

Auth::login($user);
36
Niklesh Raut 22 सितंबर 2017, 13:36
$email = $request->email;
    $password = md5($request->password);

    if ($request->remember_me == 1) {
        $cookie =  Cookie::queue('username', $email, time() + 31536000);
    } else {
        $cookie =  Cookie::queue('username', '', time() - 100);
    }

    $user = DB::table('tbl_adminuser')->where('email_address', $email)->where('password', $password)->first();
    $request->session()->put('userData', $user);

=> आप लार्वा में इस तरह मैन्युअल रूप से लॉगिन कर सकते हैं

3
parthu gajera 22 सितंबर 2017, 13:40

Auth::login() फ़ंक्शन एक प्रमाणिक वस्तु की अपेक्षा करता है। यदि आपने User कक्षा के साथ खिलवाड़ नहीं किया है, तो आपको इसमें पास होने की आवश्यकता होगी।

Auth::login($user, true);

संदर्भ: https://laravel.com/api/5.5/Illuminate/ Auth/SessionGuard.html#method_login

2
mbozwood 22 सितंबर 2017, 13:33

इसके अलावा

Auth::login($userMail->email, TRUE);

इस का उपयोग करें

Auth::login($user->id, TRUE);

4
Siva Ganesh 9 अगस्त 2018, 07:23

Auth::login($userMail->email, TRUE); के बजाय बस Auth::login($userMail, TRUE); का उपयोग करें

अधिक जानकारी के लिए जाँच करें: https://laravel.com/api/5.5 /Illuminate/Auth/SessionGuard.html#method_login

1
Jie 22 सितंबर 2017, 13:36

आपको $user को इस तरह पास/वापस करना होगा

if ($validator->fails()) {

//            $messages = $validator->messages();

            return Redirect::to('register')
                ->withErrors($validator)
                ->withInput();

        } else {

            $email = Input::get('email');
            $user = new user;
            $user->name     = Input::get('name');
            $user->email    = Input::get('email');
            $user->password = Hash::make(Input::get('password'));

            $user->save();
//            

            Auth::login($user);

या

Auth::loginUsingId($user->id, TRUE);
0
Mr. Pyramid 22 सितंबर 2017, 13:43