- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于我的网络应用程序,它既有公共(public)/未登录 View 又有管理 View ,我一直在使用完全分离的前端(React 与 nginx 一起提供)和后端。将两者分开的好处之一是,如果我愿意,我可以用 Go 或 Rust 完全重写后端,而完全不影响前端。
但是,要进行客户端身份验证,我本质上必须维护两种不同的“状态”:一种在客户端,一种在服务器。
由于客户端身份验证存在风险/不安全,因此我将前端上所有经过身份验证的组件/路由包装在授权 HOC 中,该 HOC 对服务器进行 HTTP 调用以查看用户是否获得授权。这更安全,但在生产中明显很慢,每个路线渲染延迟了近 2 秒。
另一种方法是安全性较低,只需在客户端维护身份验证而不进行 HTTP 调用(即在 redux 中将 isAuth
设置为 true)。这意味着用户可以绕过 protected 路由,但不会造成太大的损害,因为服务器使用身份验证中间件。
这里有什么建议、经验或意见吗?我是否应该采用同构并将自己与全栈 Javascript 结合起来?
最佳答案
当用户登录时,您应该在服务器上生成一个 session cookie 或一个身份验证 token 。它应该有某种生命周期,这样它就不会永远有效。然后,您应该将身份验证 token 存储在客户端上,并在将来的请求中将其用作身份验证 header 。您的 api 应要求在所有 future 请求中使用 authtoken 作为 header ,并检查以确保 auth token 仍然有效。如果有效,则返回常规响应,否则返回 40x session 超时错误。
关于javascript - 如何进行高效的客户端认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469511/
我是一名优秀的程序员,十分优秀!