Пользователь перенаправлен на страницу входа после входа в системуJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Пользователь перенаправлен на страницу входа после входа в систему

Сообщение Anonymous »

Я использую Nextjs версию 14.2.4. У меня есть страница для входа, где после проверки учетных данных пользователя и функция получает ответ успеха, файл cookie создается с использованием данных пользователя из ответа. Файл промежуточного программного обеспечения, который я запускаю, проверяет (на всех страницах) для cookie и позволяет пользователю продолжать на запрошенную страницу, либо перенаправлять их на страницу входа в систему. Все это отлично работает локально, но в производстве кажется, что файл промежуточного программного обеспечения не работает часть времени. Чтобы дополнительно объяснить, пользователь впускается на сайт, а затем после некоторой навигации или даже обновления домашней страницы, пользователь перенаправляется на страницу входа в систему, когда ясно, что присутствует требуемый файл cookie. Есть идеи, что может это вызвать? Или идеи о том, как это устранить? Я не вижу никаких ошибок на вкладке сети или иным образом и вижу файл cookie в запросе страницы. < /P>
Очень странное поведение. Есть даже времена, когда кажется, что все работает, но я проверю снова через час или около того, и я вернусь к перенаправлению. < /P>
Я использую каталог приложений И я не уверен, что есть какая -либо работа вокруг, которые не приведут к мерцанию, когда пользователь переходит на страницу. < /p>
Пример каталог < /p>
|-site
|--app
|---login
|----page.js
|---page.js
|--src
|--middleware.js
< /code>
Пример промежуточного программного файла -< /p>
import { NextResponse } from "next/server";

export async function middleware(req) {
const isAuthenticated = await req.cookies.has("auth");
const url = req.nextUrl.pathname;

if (url != "/login") {
if (!isAuthenticated) {
// Redirect to the login page
console.log("User not authenticated!!!");
return NextResponse.redirect("http://localhost:3000/login"); //of course this is pointing to the actual site
}

}
return NextResponse.next();
}

export const config = {
matcher: ['/((?!api|_next/static|_next/image|favicon.ico|sitemap.xml|robots.txt).*)'],
};
< /code>
Я пытался использовать HOC вместо промежуточного программного файла. Это работает, но, конечно, я получаю мерцание. Я также переписывал свой промежуточный файл, чтобы использовать Nextresponse.rewrite против nextresponse.redirect, но это, похоже, не соответствовало моим потребностям. Сначала у меня были все страницы в моем массиве маттера, но затем я перешел на пустой массив, так как это необходимо работать на всех четырех страницах сайта, и это, конечно, не имело никакого значения.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -logged-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»