من با اینکه توی یوز سرور کد زدم ولی باز این خطارو میگیرم و واقعا دیگه نمیدونم چطوری هندلش کنم
این محتویات فایل 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 | });
البته لاگین و لاگ اوت من داره درست کار میکنه و کدهام درست کار میکنن فقط این ارور در اررو باکس پایین سمت چپ صفحه نشون داده میشه و همچنین در ترمینال وگرنه هم لاگ این و هم لاگ اوت درست کار میکنن و مشکلی ندارن
مشکل چی هست که این ارور رو من میبینم
به حسام کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟