hossein
3 سال پیش توسط hossein مطرح شد
6 پاسخ

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

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

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

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

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

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


ثبت پرسش جدید
سعید
تخصص : برنامه نویس وب
@Saeeed 3 سال پیش مطرح شد
0

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


hossein
تخصص : توسعه دهنده
@emperatur133 3 سال پیش مطرح شد
0

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


hossein
تخصص : توسعه دهنده
@emperatur133 3 سال پیش مطرح شد
0

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


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

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

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


hossein
تخصص : توسعه دهنده
@emperatur133 3 سال پیش مطرح شد
0

الان من برای لاگین 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 3 سال پیش آپدیت شد
0

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

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

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

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


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

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