json
4 سال پیش توسط json مطرح شد
10 پاسخ

لاگین با sms و attempt

سلام دوستان
میخوام لاگین رو با sms و شماره تلفن کاربر با استفاده از متد attempt انجام بدم.
از passport استفاده میکنم چون واسه api میخوامش و از laravel/ui استفاده نمیکنم که بتونم مقدار پیش فرض برای لاگین،یعنی username رو به phonenumber تغییر بدم.
البته از یه طرف خودم sms رو اعتبارسنجی میکنم و میتونم بعداز اعتبارسنجیش بر اساس شماره تلفن کاربر رو پیدا کنم و کاربر رو با Auth::loginUsingId لاگین کنم.بنظرتون این روش درسته یا حتما باید از attempt استفاده کنم؟
اگه باید از attempt استفاده کنم چطور تغییرش بدم که براساس sms , phonenumber باشه...
ممنون میشم دوستان راهنمایی کنن.
@ali.bayat
@mhyeganeh
@milad
@AliValinejad


ثبت پرسش جدید
Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

سلام.
ببینید من یه نمونه کد برای لاگین کردن با کدملی و شماره موبایل براتون مینویسم، شما واسه sms خودتون بنویسید.

$inputType = filter_var($this->idNumber, FILTER_VALIDATE_INT) ? 'idNumber' : 'mobile';
if (! Auth::attempt([
   $inputType => $this->idNumber,
   password' => $this->password
]));

json
تخصص : آزاد
@JSON 4 سال پیش آپدیت شد
0

ممنون @arminrahmati999
امتحان کردم.
ولی باز هم ارور میده.
ظاهرا ارور به این خاطره که به جای پسورد من میخوام با فیلد smscode لاگین رو انجام بدم و ارور میده.

@ali.bayat
@mhyeganeh


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
0

سلام وقتتون بخیر!

من چندروز پیش کار رو کردم
متد username رو داخل LoginController اورلود کردم

 public function username(){
    return "phone";
}

و برای رمز هم از همون پسورد استفاده کردم و راه حلم برای این بود.

داخل فایل Illuminate\Foundation\Auth\AuthenticatesUsers
جاهایی که کاربر تلاش میکرد رمز رو وارد کنه چه درست چه غلط رمز فعلی رو پاک میکردم
و رمز فعلی چی بود، کدی که توی اس ام اس ارسال می‌شد رو برای فیلد پسورد درنظر میگرفتم و برای هر attempt اون رو خالی میکردم.


json
تخصص : آزاد
@JSON 4 سال پیش آپدیت شد
0

خیلی ممنون @Rp76
اخه مشکل اینجاست که من از laravel/ui استفاده نمیکنم برای احراز هویت و اون فایل رو ندارم که ویرایشش کنم و درنهایت نمیتونم متد username رو بازنویسی کنم چونکه از passport استفاده میکنم و برای api میخوامش.
به همین خاطره که نمیدونم چطور باید این بخش رو شخصی سازیش کنم


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش آپدیت شد
0

من از passport استفاده نکردم
بله اون روش خودت هم اوکی میتونی لاگینش کنی و برای api کاربردی نداره باید از توکن استفاده کنی

$credentials = array('username' => $request->username, 'password' => $request->password);
if(Auth::attempt($credentials, true)){
    Auth::login(Auth::user(), true);
}

json
تخصص : آزاد
@JSON 4 سال پیش آپدیت شد
0

تشکر @juza66
عکس زیر رو ببینین
پس مشکلی نداره اگه از loginUsingId استفاده کنم.
توی تصویر بعداز تایید کد پیامک با روش زیر کاربر رو لاگین میکنم
اوکیه این کد واسه لاگین از طریق api ؟
توضیح تصویر رو وارد کنید


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
0

@shirzad
سلام دوباره

برای api یا همون passport میتونی هر فیلدی رو که دوست داری بدی برای لاگین البته الان که فکرش رو میکنم چون باز هم با auth نرفتی جلو نمیتونی این رو ردیف کنی

Auth::attempt

json
تخصص : آزاد
@JSON 4 سال پیش مطرح شد
0

@Rp76
حقیقتش میتونم به راحتی با Auth::loginUsingId کاربر رو لاگین کنم(البته بعداز اعتبارسنجی).
ولی میگم شاید این روش استاندارد نباشه به همین خاطر میگم از attempt استفاده کنم بهتره.اون هم شاید.
ولی خب شاید اون روشی هم که گفتم اشکالی نداشته باشه.اگه بخوام از اتمپت استفاده کنم مجبورم تغییرش بدم که هنوز به جواب نرسیدم.

@ali.bayat
@mhyeganeh


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 4 سال پیش مطرح شد
0

سلام صبح بخیر!

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");
        }
    }

json
تخصص : آزاد
@JSON 4 سال پیش آپدیت شد
0

سلام وقت بخیر @Rp76
تست کردم متاسفانه نشد
فیلدهای لازم برای متد attempt بصورت پیش فرض ظاهرا صرفا با پاس دادن فیلدهای دلخواه تغییر نمیکنه
ظاهرا باید از همون روش خودم استفاده کنم .بازم ممنون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام