我目前正试图为我运行的rest-api服务设计一个新的web应用程序。在基本我试图实现登录/注销系统。对于授权管理,API提供了三个端点:
/login
,它通过POST
请求获取用户名和密码,并返回嵌入在json应答中的令牌。这个令牌不是一个JWT,而是一个任意的唯一字符串。它的有效期为X小时,每次使用它都会被重置为X小时有效。每个请求都在服务器上检查有效性。/logout
,使令牌在服务器端无效。/validate
,它在POST请求中接受令牌json并检查它是否有效。如果不是,则返回401。
现在我实现了如下登录过程https://www.digitalocean.com/community/tutorials/how-to-add-login-authentication-to-react-applications。应用程序最后应该使用react-router
来提供不同的页面。我的问题不是如何在每次页面更改时集成令牌的验证,如果返回401,则再次切换到登录页面。
PS:服务器用c++编写,访问自定义数据库。
根据你的建议,你想集成验证,所以你需要在当前路由组件上创建一个组件。
它将作为私有路由,一旦您从服务器获得401响应,您将通过更新令牌重定向到登录页面为空,这取决于您正在使用的存储,即会话存储或本地存储。
这样,当您的令牌过期时,下一个请求响应401,您将注销。
进一步,我链接了一个创建私有路由和注销的示例要点https://gist.github.com/EduVencovsky/f8f6c275f42f7352571c92a59309e31d