Node Js - 会话管理

时间:2016-06-10 02:57:37

标签: node.js session cookies

我有一个简单的应用程序,它将登录用户并根据他的角色让他使用特定的API(分别说是normal / admin..view / update)。我正在使用MYSQL来验证用户和连接池以管理与应用程序的许多连接。

这就是我管理会话的方式,

app.post('/login',function(req,res){
    Authenticate(req.body.username,req.body.password,function(err,fname,user){
        if(!err) {
                req.session.name=user;
                res.send("Welcome " + fname);
            }
        else{
                res.send("There seems to be an issue with the username/password combination that you entered");         
            }
    });
});

登录时

app.post('/updateInfo',function(req,res){
    if(req.session.name){
 // My logic - i ll return the role by searching in db using this req.session.name, if admin will allow him.
}
});

每当我想访问任何特定的API时,我都会检查这个会话名称。

if(req.session.name == req.body.username)
{
req.session.destroy();
} 

我将在注销时销毁会话。

我有两个问题,因为我不了解节点js中会话的机制。

  1. 现在假设我以管理员用户身份登录并在身份验证导出后 cookie(比如使用编辑此cookie chrome扩展名)和注销。 然后以普通用户身份登录并导入cookie(admin cookie),将 有任何违规(因为现在会话将包含管理员用户名)?
  2. 假设我想避免多重     对于同一个用户的连接(用户使用不同的浏览器/移动设备登录),我可以添加这段代码吗?

                   <asp:TemplateField HeaderText="ReadStatus" Visible="false">
                                                  <ItemTemplate>
                                                          <asp:Label ID="readStatus" runat="server"></asp:Label>
                                                          <asp:HiddenField ID="readStatusHiddenField" runat="server" Value='<%#Eval("ReadStatus") %>'/>
                                                      </ItemTemplate>
                                                  </asp:TemplateField>
    
  3. 然后继续进行身份验证?这有什么缺点?为什么它会起作用?

    我真的很想让这个无状态(不想在db中保持状态/会话),因为我想要表现。我可以做一些无状态的事情,即使有100个并发用户也能工作吗?

0 个答案:

没有答案