使用 JWT ,如何设置并使用它进行身份验证?
Working with JWT , how to set it and use it for authentication?
示例场景:-
我在前端使用 HTML 和 JS。
对于后端,我正在使用 Express 。
对于身份验证,我正在使用 JWT 。
我知道的基本情况是,JWT 通常在发送回服务器时在授权 header 中设置。
我想要的:-
让我们假设客户端请求 post /user/login 路由通过表单提供其凭据。 Auth 中间件将验证凭据并使用一些有效负载生成 jwt 令牌。
我的问题从这里开始,如何在客户端设置此 jwt 并在 header 中将其取回,同时将用户导航到经过身份验证的页面,我希望用户在成功登录时重定向到该页面。
如下所示:-
app.post('/user/login' , authMiddleware , async (req , res) => {
res.redirect('/user/createTask')
}
假设 /user/createTask 需要 jwt,它将在让用户进入路由之前对其进行验证。
那么 authMiddleware 中必须包含什么,以便在客户端的本地存储或某处设置 jwt,并在授权中取回它 header。
如果客户端需要做一些事情才能使其正常工作,请也提出建议。
整个场景将如何运作?
如果您通过表单发送凭据,那么您将无法在发送重定向响应时捕获响应。重定向将由浏览器处理,您的 JS 将无法访问您在响应中发送的任何内容。
要使此方案生效,您必须通过 javascript 调用 post /user/login
端点。然后您可以从您的服务器接收响应。从中读取任何令牌(例如可以在响应的 body 中),将令牌设置在存储中的某个位置,然后调用 /user/createTask
端点。如果您想使用在 Authorization
header 中发送的 JWT,您将必须通过 javascript 调用所有端点。浏览器无法向请求添加 Authorization
header。你可以将token保存在cookie中(登录的响应可以设置cookie),然后浏览器将cookie连同请求一起发送。
示例场景:-
我在前端使用 HTML 和 JS。 对于后端,我正在使用 Express 。 对于身份验证,我正在使用 JWT 。
我知道的基本情况是,JWT 通常在发送回服务器时在授权 header 中设置。
我想要的:-
让我们假设客户端请求 post /user/login 路由通过表单提供其凭据。 Auth 中间件将验证凭据并使用一些有效负载生成 jwt 令牌。
我的问题从这里开始,如何在客户端设置此 jwt 并在 header 中将其取回,同时将用户导航到经过身份验证的页面,我希望用户在成功登录时重定向到该页面。
如下所示:-
app.post('/user/login' , authMiddleware , async (req , res) => {
res.redirect('/user/createTask')
}
假设 /user/createTask 需要 jwt,它将在让用户进入路由之前对其进行验证。
那么 authMiddleware 中必须包含什么,以便在客户端的本地存储或某处设置 jwt,并在授权中取回它 header。
如果客户端需要做一些事情才能使其正常工作,请也提出建议。 整个场景将如何运作?
如果您通过表单发送凭据,那么您将无法在发送重定向响应时捕获响应。重定向将由浏览器处理,您的 JS 将无法访问您在响应中发送的任何内容。
要使此方案生效,您必须通过 javascript 调用 post /user/login
端点。然后您可以从您的服务器接收响应。从中读取任何令牌(例如可以在响应的 body 中),将令牌设置在存储中的某个位置,然后调用 /user/createTask
端点。如果您想使用在 Authorization
header 中发送的 JWT,您将必须通过 javascript 调用所有端点。浏览器无法向请求添加 Authorization
header。你可以将token保存在cookie中(登录的响应可以设置cookie),然后浏览器将cookie连同请求一起发送。