راکت
json
json
توسط 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
Armin Rahmati
@arminrahmati9995 سال پیشمطرح شد
0

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

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

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

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

@ali.bayat
@mhyeganeh


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

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

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

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

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

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


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

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


سیدعلی موسوی
سیدعلی موسوی
تخصص :سی شارپ و پی اچ پی
@juza665 سال پیشمطرح شد
0

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

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

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

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


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

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

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

Auth::attempt

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

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

@ali.bayat
@mhyeganeh


رضا پارسیان
رضا پارسیان
تخصص :توسعه دهنده Php , Laravel
@Rp765 سال پیشمطرح شد
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
تخصص :آزاد
@JSON5 سال پیشمطرح شد
0

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


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

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