راکت

لاگین با sms و attempt

10 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

10
Armin Rahmati
Armin Rahmati
@arminrahmati999

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

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

تخصص: آزاد

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

@ali.bayat
@mhyeganeh

شاید پاسخ شما همین‌جا باشد

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

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

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

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

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

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

json
json
@JSON

تخصص: آزاد

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

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

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

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

تخصص: آزاد

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

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

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

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

Auth::attempt
json
json
@JSON

تخصص: آزاد

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

@ali.bayat
@mhyeganeh

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

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

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
@JSON

تخصص: آزاد

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

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

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