مجید
3 سال پیش توسط مجید مطرح شد
1 پاسخ

احراز هویت بیت لاراول و vue

پروژه من لاراول و vue cli هست و از laravel sanctum استفاده میکنم (جدا از هم)
مشکلی که دارم اینه که عملیات لاگین و رجیستر به درستی انجام میشه بعد از لاگین اطلاعات یوزر برمیگرده و بعد از رجیستر کاربر وارد دیتابیس میشه ولی موقعی که روت auth/user را فراخانی میکنم تا اطلاعات user لاگین شده را بگیرم unauthenticated میده؟
به نظرتون برای حل مشکل باید چیکار کنم؟

فایل sanctum.php

'stateful' => explode(',', env(
    'SANCTUM_STATEFUL_DOMAINS',
    'localhost,src.test:8080,localhost:3000,127.0.0.1,127.0.0.1:8000,::1,'.parse_url(env('APP_URL'), PHP_URL_HOST)
))

فایل cors.

'paths' => ['api/*','login','logout','sanctum/csrf-cookie'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true

فایل AuthController

   public function user()
{
    $data = [
        Auth::user(),
        'notifications' => Auth::user()->unreadNotifications(),
        'message' => 'successful'
    ];
    return response()->json($data , Response::HTTP_OK);
}

    public function login(Request $request)
{
    // Validate Form Inputs
    $request->validate([
        'email' => ['required', 'email'],
        'password' => ['required'],
    ]);

    if (Auth::attempt($request->only(['email', 'password']))) {
        return response()->json(Auth::user(), Response::HTTP_OK);
    }

    throw ValidationException::withMessages([
        'email' => 'incorrect credentials.'
    ]);
}

فایل روت

Route::middleware(['auth:sanctum'])->group(function () {
    Route::get('/users', 'UserController@index');
});

فایل axios.js

Axios.defaults.withCredentials = true;

فایل axios.js

export let loginRequest = async (formData) => {
    if (!await checkAuth()) {
        let loginReq
        await axios.get(${baseUrl}csrf-cookie).then(res => {
            loginReq = Axios.post(auth/login, formData)
        })

        return loginReq
    }
};

بعد از لاگین اطلاعات کاربر توی تب نتورک نمایش داده میشه


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
1

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

if (!await checkAuth()) {

این تابع نمیدونم داری چی رو چک میکنی و احتمال میدم توی این تابع باید حتما توکنی که ذخیره کردی رو با یک درخواست http به سمت سرور احراز هویت رو بررسی کنی

و جاهای که نیاز هست مثه auth/user که اطلاعات کاربر رو بگیری => کافیه توی هدر یا همراه درخواستت توکن رو هم بفرستی

 axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`;

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

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