我想在客户端中创建受保护的路由。我曾短暂地想知道是否可以在没有服务器的情况下进行用户身份验证,但是this post对我来说回答了这一问题(即,这是一个坏主意)。
我已经在我的应用程序的根目录(在服务器中)检查是否存在令牌。用户成功通过身份验证后,将发出令牌。因此,未登录的用户无法访问任何私有路由。
在我的客户端中,路由是通过哈希路由完成的,例如<a href="#private">Private Page</a>
。这种方法不会对服务器进行任何调用,这很重要,因为如果不需要,我不想往返于服务器。更重要的是,此路由不需要数据库中的任何数据,因此不会进行服务器调用。但是,如果经过身份验证的用户更改了令牌,然后导航到另一条受保护的路由,那么当我实际上要使他们的会话无效并注销时,他们仍然可以查看该路由。
对于需要经过身份验证的数据的路由,这是我的身份验证设置:
axios.get("/api/private-route", {
headers: {
Authorization: Cookies.get('token')
}
})
它已在Express服务器上通过
进行了身份验证router.get('/api/private-route', authenticateToken, (req, res, next) => { res.send(privateData) })
为了保护客户端中的路由,我意识到到服务器的往返是必须的,因此发出简单的GET
请求(如上)是实现对路由进行身份验证的唯一方法不需要后端数据?我没有在客户端中使用任何库/框架。