سلام. من api برای لاراول نوشتم . برای احراز هویت هم
Route::middleware('auth:api')->group( function (){
Route::post('/tasks', [TaskController::class, 'add_task']);
});
با postman هم دارم تست میکنم.خب . الان دوتا مشکل هست
یکی اینکه توکن با متد post ارسال نیمشه (تو body میفرستم)
ولی اگه متد رو get کنم و پارامتری رو url بفرستم درست کار میکنه
مشکل بعدی اینکه میخوام کاربر یک بار لاگین کرد همیشه لاگین بمونه . مثل تلگرام، واتس اپ و ...
درضمن لاراول 8 کار میکنم
لطفا یه راهنمایی کنید. خیلی تو نت چرخیدم چیزی پیدا نشد. خیلی فورسه
@hesammousavi
@emperatur133 اگر به دنبال لاگین دائمی هستی بهتره اصلا احراز هویت نکنی :)
@Saeeed یعنی چی احراز هویت نکنم؟
الان تلگرام احراز هویت نمیکنه؟
من میخوام مثل پیامرسان ها که یه بار لاگین میکنی همیشه لاگین میمونه
همین رو میخوام
شاید پاسخ شما همینجا باشد
الان من برای لاگین 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 لاراول کار نکرده؟ یا سوال من خیلی ابتدایی کسی جواب نمیده؟
شما سوال رو بد میپرسی!
ارسال اطلاعات توی متد post با get فرق داره!
و در ضمن وقتی از api استفاده میکنی اون دگمه مرابخاطر بسپار کار نمیکنه برای شما چون کوکی برای شما ست نمیشه، اینکار به عهده فرانت شما هستش که خودتون بعد از بررسی اون دگمه / چک باکس اطلاعات رو توی مرورگر برای کاربر ذخیره کنی.
بیشتر مطالعه کنبد
https://7learn.com/programming/get-vs-post