我在reactJs中创建了一个管理面板,可以管理数千人。我想让管理员登录30分钟。使用用户名和密码登录后,服务器将发送userId,并将该ID存储在cookie中,因为对于每个请求,我都应在标头中发送userId。并制作了一个cookie cookie,表明会话尚未结束。然后在compenentDidMount上设置一个条件,如果存在登录cookie,则使变量为true,如下所示:
if (this.store.cookieExist("4DeHn6")) {
this.store.changeSession(true);
this.store.changeId(this.uId);
else {
this.store.changeSession(null);
this.store.changeId(null);
}
,如果会话打开,并使用react-router,我渲染页面,否则将其重定向到登录页面,并使用类似这样的代码
<Route
exact
path="/locations"
render={() =>
!this.store.openSession ? (
<Redirect to="/loginPage" />
) : (
<Locations />
)
}
/>
我正在使用mobx进行状态管理。
我唯一要做的就是使两个cookie名称成为使用密码生成器生成的字符串。我真的为我的应用程序的安全性担心,因为我认为如果有人在浏览器中检查我的代码,就可以找到这两个cookie并登录并获取敏感数据。
对于项目的第一部分,服务器中没有使用令牌。
有没有更好,更安全的方法。
感谢您的帮助。
答案 0 :(得分:0)
最后,服务器负责仅响应具有有效令牌的请求。
在登录过程中,您已设置了在每个请求标头中发送的令牌,服务器可以判断该令牌是否仍然有效,并向您提供预期的响应,或者告诉您不允许您进行通过发送401 Unauthorised
响应来获取该请求。
如果您使用axios之类的中间件来处理您的http请求,则可以方便地set up an interceptor处理401
响应并将您发送到登录页面。像这样:
responseError: error => {
switch (errorCode) {
case 401:
// your logout logic: delete the cookie, and set the session to false
}
return Promise.reject(error);
}
这将在您的会话为假的情况下触发渲染,并使用当前逻辑将用户重定向到登录页面。而且,通过不响应无效或过期的令牌,也将提高应用程序的安全性。
希望对您有帮助!
答案 1 :(得分:0)
我决定使用“ cryptr”包进行加密 我做了这样的事情:
然后进行加密和加密我的密码,并在我的代码中将其用作密码 像这样的东西:
const cryptr = new Cryptr("EQqwmBsYQfptNPmHEkjVXSVvJFsE5XbsLFkzMj2WVcDcQHELFTB6JLF35tQfzrf6");