मैं 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);
क्या मैं गलत हूं। कृपया मेरा मार्ग दर्शन कीजिए।
6 जवाब
लॉगिन फ़ंक्शन को Authenticatable
प्रकार के उपयोगकर्ता की आवश्यकता होती है और आपने अभी email
दिया है जो कि स्ट्रिंग है इसलिए आपको यह त्रुटि मिलती है, या तो Auth::loginUsingId($id);
का उपयोग करें
$user = User::where('email','=',$email)->first();
Auth::loginUsingId($user->id, TRUE);
या केवल
Auth::login($user);
$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);
=> आप लार्वा में इस तरह मैन्युअल रूप से लॉगिन कर सकते हैं
Auth::login()
फ़ंक्शन एक प्रमाणिक वस्तु की अपेक्षा करता है। यदि आपने User
कक्षा के साथ खिलवाड़ नहीं किया है, तो आपको इसमें पास होने की आवश्यकता होगी।
Auth::login($user, true);
संदर्भ: https://laravel.com/api/5.5/Illuminate/ Auth/SessionGuard.html#method_login
इसके अलावा
Auth::login($userMail->email, TRUE);
इस का उपयोग करें
Auth::login($user->id, TRUE);
Auth::login($userMail->email, TRUE);
के बजाय बस Auth::login($userMail, TRUE);
का उपयोग करें
अधिक जानकारी के लिए जाँच करें: https://laravel.com/api/5.5 /Illuminate/Auth/SessionGuard.html#method_login
आपको $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);
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।