راکت

login همیشگی در api لاراول

6 پاسخ

سلام. من api برای لاراول نوشتم . برای احراز هویت هم

Route::middleware('auth:api')->group( function (){
Route::post('/tasks', [TaskController::class, 'add_task']);
    });

با postman هم دارم تست میکنم.خب . الان دوتا مشکل هست
یکی اینکه توکن با متد post ارسال نیمشه (تو body میفرستم)
ولی اگه متد رو get کنم و پارامتری رو url بفرستم درست کار میکنه

مشکل بعدی اینکه میخوام کاربر یک بار لاگین کرد همیشه لاگین بمونه . مثل تلگرام، واتس اپ و ...
درضمن لاراول 8 کار میکنم

لطفا یه راهنمایی کنید. خیلی تو نت چرخیدم چیزی پیدا نشد. خیلی فورسه
@hesammousavi

ثبت پرسش جدید

پاسخ‌ها

6
سعید
سعید
@Saeeed

تخصص: برنامه نویس وب

@emperatur133 اگر به دنبال لاگین دائمی هستی بهتره اصلا احراز هویت نکنی :)

hossein
hossein
@emperatur133

تخصص: توسعه دهنده

@Saeeed یعنی چی احراز هویت نکنم؟
الان تلگرام احراز هویت نمیکنه؟
من میخوام مثل پیامرسان ها که یه بار لاگین میکنی همیشه لاگین میمونه
همین رو میخوام

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

hossein
hossein
@emperatur133

تخصص: توسعه دهنده

کسی نمیتونه کمک کنه؟

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

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

برای این که همیشه لاگین بمونه باید توی لوکال استورج یا کوکی اطلاعات توکن رو ذخیره کنی و قبل از اجرا بررسی کنی ایا اطلاعاتی که ذخیره کردی هستند و در صورت نیاز درخواست سمت سرور بدی.

برای موبایل هم که دیتابیس و فایل و روش های زیادی هست.

hossein
hossein
@emperatur133

تخصص: توسعه دهنده

الان من برای لاگین api این فانکشن رو نوشتم

public function login(Request $request){
        //validate data
        $validator = Validator::make($request->all(),
            [
                'username' => ['required'],
                'password' => ['required']
            ]);

        if($validator->fails()) {
            return response([
                'data' => $validator->errors(),
                'status' => 'error'
            ], 422);
        }
        //check login user

        if(!auth()->attempt(['username'=>\request('username'),'password'=>\request('password')],true)) {
            return response([
                'data' => [
                    'message' => 'اطلاعات صحیح نیست.'
                ],
                'status' => 'error'
            ],403);
        }

        auth()->user()->update([
            'api_token' => Str::random(100)
        ]);
        return response([
            'data' => [
                'fullname' => auth()->user()->fullname,
                'token' => auth()->user()->api_token,
            ],
            'status' => 'success'
        ],200);
    }

خب . remember که true دادم باید همیشه لاگین باشه دیگه؟
کاربر برای هر درخواست اون api_token رو باید بفرسته . چک میکنه اگه توکن موجود باشه درخواست بررسی میشه و گرنه خطا میده میگه دسترسی ندارین

الان یه مشکل دیگه هست اون توکن فقط با url بفرستم درست کار میکنه. یعنی اینطوری

https://domain.com/api/v1/tasks/?api_token=pqEH17ZCCgVJq...

ولی اگه درخواست متد post باشه دیگه توکن رو نمیشه پارامتری فرستاد باید تو body در request باشه
ولی توکن رو نمیخونه .
چیکار کنم؟
یعنی واقعا کسی با متد post تو api لاراول کار نکرده؟ یا سوال من خیلی ابتدایی کسی جواب نمیده؟

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

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

شما سوال رو بد میپرسی!

ارسال اطلاعات توی متد post با get فرق داره!

و در ضمن وقتی از api استفاده میکنی اون دگمه مرابخاطر بسپار کار نمیکنه برای شما چون کوکی برای شما ست نمیشه، اینکار به عهده فرانت شما هستش که خودتون بعد از بررسی اون دگمه / چک باکس اطلاعات رو توی مرورگر برای کاربر ذخیره کنی.

بیشتر مطالعه کنبد
https://7learn.com/programming/get-vs-post

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

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