راکت
hossein
hossein
توسط 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


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

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


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

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


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

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


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

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

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


hossein
hossein
تخصص :توسعه دهنده
@emperatur1334 سال پیشمطرح شد
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 لاراول کار نکرده؟ یا سوال من خیلی ابتدایی کسی جواب نمیده؟


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

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

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

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

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


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

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