我有一個 Next.js 無服務器注銷功能:
import magic from './magic';
import { withSessionRoute } from './sessions';
export default withSessionRoute(async function logoutHandler(
request,
response,
) {
try {
if (request.method === 'GET') {
if (request.session.user) {
await magic.users.logoutByIssuer(request.session.user.issuer);
}
request.session.destroy();
return response.redirect(302, '/').end();
}
const message = 'This endpoint only supports the GET method.';
return response.status(405).json({ message });
} catch (error) {
console.log(error);
}
});
重要的部分是response.redirect(302, '/').end();。
我在按鈕的onClick處理程式中觸發它:
const logoutRoute = '/api/logout';
const logoutRequest = () => axios.get(logoutRoute);
async function handleLogoutClick() {
return await logoutRequest();
}
// ... later
<button onClick={handleLogoutClick}>
{t('user-authentication:logout')}
</button>
但是,當請求決議時,Next.js 會加載/,但不會在瀏覽器中重定向。
$ yarn dev
yarn run v1.22.17
$ next dev
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info - Loaded env from /Users/janhesters/dev/my-proj/.env.local
event - compiled client and server successfully in 943 ms (217 modules)
wait - compiling /home (client and server)...
event - compiled client and server successfully in 173 ms (594 modules)
wait - compiling /api/logout...
event - compiled client and server successfully in 96 ms (612 modules)
wait - compiling / (client and server)...
event - compiled client and server successfully in 56 ms (620 modules)
wait - compiling...
event - compiled successfully in 76 ms (58 modules)

缺少什么以便前端實際重定向到/?
uj5u.com熱心網友回復:
所以在我的具體情況下Router.push成功地發生了。
中的某些內容getServerSideProps導致即時重定向回傳登錄。
export const getServerSideProps = withIronSessionSsr(
async function getServerSideProps({ req, locale }) {
const user = req.session.user;
if (!user) {
return {
redirect: {
destination: '/login',
permanent: false,
},
};
}
return {
props: {
user: mapUserSessionToUserProfile(user),
...(await serverSideTranslations(locale, [
'common',
'home',
'user-authentication',
])),
},
};
},
sessionOptions,
);
我的問題是,request.session.user是undefined,但是這是一個單獨的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/370575.html
