如何避免多个其他条件

时间:2018-01-13 19:53:26

标签: javascript

我正在尝试编写一个片段来检查用户是否已登录并且令牌有效。 如果不是这种情况,则应将用户重定向到登录页面。

但是在我的尝试中,我必须使用多个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
}

0 个答案:

没有答案