我正在尝试编写一个片段来检查用户是否已登录并且令牌有效。 如果不是这种情况,则应将用户重定向到登录页面。
但是在我的尝试中,我必须使用多个else
行,它们正在做同样的事情:重定向......
是否可以更智能地避免多个else
。我认为完成后,代码会变小......
static async getInitialProps (context, apolloClient) {
const { req } = context
const initProps = {}
if (req && req.headers) {
const cookies = req.headers.cookie
if (cookies && typeof cookies === 'string') {
const cookiesJSON = jsHttpCookie.parse(cookies)
initProps.token = cookiesJSON['auth-token']
if (cookiesJSON['auth-token']) {
jwt.verify(cookiesJSON['auth-token'], secret, (error, decoded) => {
if (error) {
console.error(error)
redirect(context, '/login')
}
if (decoded) initProps.id = decoded.id
})
} else {
redirect(context, '/login')
}
} else {
redirect(context, '/login')
}
} else {
redirect(context, '/login')
}
return initProps
}