سلام دوستان
میخوام لاگین رو با sms و شماره تلفن کاربر با استفاده از متد attempt انجام بدم.
از passport استفاده میکنم چون واسه api میخوامش و از laravel/ui استفاده نمیکنم که بتونم مقدار پیش فرض برای لاگین،یعنی username رو به phonenumber تغییر بدم.
البته از یه طرف خودم sms رو اعتبارسنجی میکنم و میتونم بعداز اعتبارسنجیش بر اساس شماره تلفن کاربر رو پیدا کنم و کاربر رو با Auth::loginUsingId لاگین کنم.بنظرتون این روش درسته یا حتما باید از attempt استفاده کنم؟
اگه باید از attempt استفاده کنم چطور تغییرش بدم که براساس sms , phonenumber باشه...
ممنون میشم دوستان راهنمایی کنن.
@ali.bayat
@mhyeganeh
@milad
@AliValinejad
سلام.
ببینید من یه نمونه کد برای لاگین کردن با کدملی و شماره موبایل براتون مینویسم، شما واسه sms خودتون بنویسید.
$inputType = filter_var($this->idNumber, FILTER_VALIDATE_INT) ? 'idNumber' : 'mobile';
if (! Auth::attempt([
$inputType => $this->idNumber,
password' => $this->password
]));
ممنون @arminrahmati999
امتحان کردم.
ولی باز هم ارور میده.
ظاهرا ارور به این خاطره که به جای پسورد من میخوام با فیلد smscode لاگین رو انجام بدم و ارور میده.
سلام وقتتون بخیر!
من چندروز پیش کار رو کردم
متد username رو داخل LoginController اورلود کردم
public function username(){
return "phone";
}
و برای رمز هم از همون پسورد استفاده کردم و راه حلم برای این بود.
داخل فایل Illuminate\Foundation\Auth\AuthenticatesUsers
جاهایی که کاربر تلاش میکرد رمز رو وارد کنه چه درست چه غلط رمز فعلی رو پاک میکردم
و رمز فعلی چی بود، کدی که توی اس ام اس ارسال میشد رو برای فیلد پسورد درنظر میگرفتم و برای هر attempt اون رو خالی میکردم.
خیلی ممنون @Rp76
اخه مشکل اینجاست که من از laravel/ui استفاده نمیکنم برای احراز هویت و اون فایل رو ندارم که ویرایشش کنم و درنهایت نمیتونم متد username رو بازنویسی کنم چونکه از passport استفاده میکنم و برای api میخوامش.
به همین خاطره که نمیدونم چطور باید این بخش رو شخصی سازیش کنم
من از passport استفاده نکردم
بله اون روش خودت هم اوکی میتونی لاگینش کنی و برای api کاربردی نداره باید از توکن استفاده کنی
$credentials = array('username' => $request->username, 'password' => $request->password);
if(Auth::attempt($credentials, true)){
Auth::login(Auth::user(), true);
}
تشکر @juza66
عکس زیر رو ببینین
پس مشکلی نداره اگه از loginUsingId استفاده کنم.
توی تصویر بعداز تایید کد پیامک با روش زیر کاربر رو لاگین میکنم
اوکیه این کد واسه لاگین از طریق api ؟
@shirzad
سلام دوباره
برای api یا همون passport میتونی هر فیلدی رو که دوست داری بدی برای لاگین البته الان که فکرش رو میکنم چون باز هم با auth نرفتی جلو نمیتونی این رو ردیف کنی
Auth::attempt
@Rp76
حقیقتش میتونم به راحتی با Auth::loginUsingId کاربر رو لاگین کنم(البته بعداز اعتبارسنجی).
ولی میگم شاید این روش استاندارد نباشه به همین خاطر میگم از attempt استفاده کنم بهتره.اون هم شاید.
ولی خب شاید اون روشی هم که گفتم اشکالی نداشته باشه.اگه بخوام از اتمپت استفاده کنم مجبورم تغییرش بدم که هنوز به جواب نرسیدم.
سلام صبح بخیر!
public function Login(UserRequest $request)
{
if (Auth::attempt(["phone"=>$request->input("phone"),"pasword"=>$request->input("pass")])) {
$result=Auth::user()->toArray();
$result["token"]=Auth::user()->createToken("silarec")->accessToken;
return [
"id"=>$result['id'],
"name"=>$result['name'],
"email"=>$result['email'],
"token"=>$result['token'],
];
}else{
abort(403,"Email or password is wrong");
}
}
سلام وقت بخیر @Rp76
تست کردم متاسفانه نشد
فیلدهای لازم برای متد attempt بصورت پیش فرض ظاهرا صرفا با پاس دادن فیلدهای دلخواه تغییر نمیکنه
ظاهرا باید از همون روش خودم استفاده کنم .بازم ممنون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟