使用 JWT 在 Next JS 中进行条件渲染
Conditional rendering in Next JS with JWT
我有这样一个组件:
export default function Header () => {
return (
<button>
FIRST BUTTON
</button>
<button>
OTHER BUTTON
</button>
)
}
我需要做的是,如果用户未连接,则显示第一个按钮,如果连接,则将其替换为另一个按钮。
我从另一个 API 收到 json 网络令牌,并将其设置在本地存储中。
但是不知道之后怎么办
我试图放置一个三元表达式,但似乎在 HTML 呈现时无法访问令牌,因此它不起作用。
I set it in the local storage.
您不能使用 local storage 执行此操作,因为它仅适用于 client-side 渲染。使用 Next.js,您还需要为 server-side 渲染保留数据。
我建议您将 json 网络令牌移动到具有 nookies
的 cookie 中,它将与 client-side 和 server-side 渲染共享值。
然后你就可以这样得到你的token
export default function Header () => {
const cookies = nookies.get({}) //get all cookies value
const { tokenValue } = cookies //`tokenValue` is your cookie name
return (</>
{tokenValue ? <button>FIRST BUTTON</button> : <button>OTHER BUTTON</button>}
</>)
}
除此之外,本地存储对于 XSS 攻击并不安全,因此我们应该避免将敏感数据(如令牌)保存在本地存储中。您可以查看 this 以更好地理解。
你可以用这个。
export default function Header() {
const token = "cookie name";
return (
<>
<button>
{token ? "FIRST BUTTON" : "OTHER BUTTON"}
</button>
</>
)
}
我有这样一个组件:
export default function Header () => {
return (
<button>
FIRST BUTTON
</button>
<button>
OTHER BUTTON
</button>
)
}
我需要做的是,如果用户未连接,则显示第一个按钮,如果连接,则将其替换为另一个按钮。
我从另一个 API 收到 json 网络令牌,并将其设置在本地存储中。
但是不知道之后怎么办
我试图放置一个三元表达式,但似乎在 HTML 呈现时无法访问令牌,因此它不起作用。
I set it in the local storage.
您不能使用 local storage 执行此操作,因为它仅适用于 client-side 渲染。使用 Next.js,您还需要为 server-side 渲染保留数据。
我建议您将 json 网络令牌移动到具有 nookies
的 cookie 中,它将与 client-side 和 server-side 渲染共享值。
然后你就可以这样得到你的token
export default function Header () => {
const cookies = nookies.get({}) //get all cookies value
const { tokenValue } = cookies //`tokenValue` is your cookie name
return (</>
{tokenValue ? <button>FIRST BUTTON</button> : <button>OTHER BUTTON</button>}
</>)
}
除此之外,本地存储对于 XSS 攻击并不安全,因此我们应该避免将敏感数据(如令牌)保存在本地存储中。您可以查看 this 以更好地理解。
你可以用这个。
export default function Header() {
const token = "cookie name";
return (
<>
<button>
{token ? "FIRST BUTTON" : "OTHER BUTTON"}
</button>
</>
)
}