من با اینکه توی یوز سرور کد زدم ولی باز این خطارو میگیرم و واقعا دیگه نمیدونم چطوری هندلش کنم
این محتویات فایل actions.tx من
'use server'
import { cookies } from 'next/headers';
export async function handleRefresh() {
const cookieStore = await cookies()
console.log('handleRefresh');
const refreshToken = await getRefreshToken();
const token = await fetch('http://localhost:8000/api/auth/token/refresh/', {
method: 'POST',
body: JSON.stringify({
refresh: refreshToken
}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then((json) => {
console.log('Response - Refresh:', json);
if (json.access) {
cookieStore.set('session_access_token', json.access, {
httpOnly: true,
secure: false,
maxAge: 60 * 60, // 60 minutes
path: '/'
});
return json.access;
} else {
resetAuthCookies();
}
})
.catch((error) => {
console.log('error', error);
resetAuthCookies();
})
return token;
}
export async function handleLogin(userId: string, accessToken: string, refreshToken: string) {
const cookieStore = await cookies()
cookieStore.set('session_userid', userId, {
httpOnly: true,
secure: false,
maxAge: 60 * 60 * 24 * 7, // One week
path: '/'
});
cookieStore.set('session_access_token', accessToken, {
httpOnly: true,
secure: false,
maxAge: 60 * 60, // 60 minutes
path: '/'
});
cookieStore.set('session_refresh_token', refreshToken, {
httpOnly: true,
secure: false,
maxAge: 60 * 60 * 24 * 7, // One week
path: '/'
});
}
export async function resetAuthCookies() {
const cookieStore = await cookies();
cookieStore.set('session_userid', '', {
expires: new Date(0),
path: '/',
});
cookieStore.set('session_access_token', '', {
expires: new Date(0),
path: '/',
});
cookieStore.set('session_refresh_token', '', {
expires: new Date(0),
path: '/',
});
}
//
// Get data
export async function getUserId() {
const cookieStore = await cookies()
const userId = cookieStore.get('session_userid')?.value
return userId ? userId : null
}
export async function getAccessToken() {
const cookieStore = await cookies()
let accessToken = cookieStore.get('session_access_token')?.value;
if (!accessToken) {
accessToken = await handleRefresh();
}
return accessToken;
}
export async function getRefreshToken() {
const cookieStore = await cookies()
let refreshToken = cookieStore.get('session_refresh_token')?.value;
return refreshToken;
}
این محتویات دکمه لاگ اوت من که میخوام سشن رو پاک کنم همچنین یوزر آی دی رو که در بالا هست
'use client';
import { useRouter } from 'next/navigation';
import { resetAuthCookies } from '../auth/route';
import MenuLink from './navbar/MenuLink';
const LoggoutButton = () => {
const router = useRouter()
const logout = async() => {
await resetAuthCookies()
router.push('/')
}
return (
<MenuLink
onClick={logout}
label="Logout"
/>
)
}
export default LoggoutButton;
و این هم اروری که میگیرم
Error: Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options
at resetAuthCookies (file://C%3A/Users/7Aseman-09/Desktop/clone/nextjs/djangobnb/app/actions.ts:77:16)
75 | const cookieStore = await cookies();
76 |
> 77 | cookieStore.set('session_userid', '', {
| ^
78 | expires: new Date(0),
79 | path: '/',
80 | });
⨯ unhandledRejection: Error: Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options
at resetAuthCookies (file://C%3A/Users/7Aseman-09/Desktop/clone/nextjs/djangobnb/app/actions.ts:77:16)
75 | const cookieStore = await cookies();
76 |
> 77 | cookieStore.set('session_userid', '', {
| ^
78 | expires: new Date(0),
79 | path: '/',
80 | });
⨯ unhandledRejection: Error: Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options
at resetAuthCookies (file://C%3A/Users/7Aseman-09/Desktop/clone/nextjs/djangobnb/app/actions.ts:77:16)
75 | const cookieStore = await cookies();
76 |
> 77 | cookieStore.set('session_userid', '', {
| ^
78 | expires: new Date(0),
79 | path: '/',
80 | });
البته لاگین و لاگ اوت من داره درست کار میکنه و کدهام درست کار میکنن فقط این ارور در اررو باکس پایین سمت چپ صفحه نشون داده میشه و همچنین در ترمینال وگرنه هم لاگ این و هم لاگ اوت درست کار میکنن و مشکلی ندارن
مشکل چی هست که این ارور رو من میبینم
اولین نفری باشید که به این پرسش کمک میکند و مسیر حل مشکل را باز میکند.
اولین پاسخ را بنویسیدشاید پاسخ شما همینجا باشد