Session 我们如何在web应用程序中进行身份验证?

Session 我们如何在web应用程序中进行身份验证?,session,authentication,node.js,session-cookies,Session,Authentication,Node.js,Session Cookies,对不起,我写了很多来解释我的情况,如果你没有时间或者没有心情读这些,就跳到问题上来。即使回答其中一个问题也能帮助我解决问题,谢谢:D 我正试图在node.js中编写一个web应用程序,但由于我对web太陌生,我不知道如何编写web登录系统。我不想使用基本或摘要http身份验证,我希望它像普通登录系统一样使用http表单,不同的页面为不同类型的用户显示不同的内容。我搜索了一下,我知道一些基本知识,但还不够。 这就是我得到的: 我们检查用户并从 在数据库中发布数据 如果正确,我们将给客户端一个新会话

对不起,我写了很多来解释我的情况,如果你没有时间或者没有心情读这些,就跳到问题上来。即使回答其中一个问题也能帮助我解决问题,谢谢:D

我正试图在node.js中编写一个web应用程序,但由于我对web太陌生,我不知道如何编写web登录系统。我不想使用基本或摘要http身份验证,我希望它像普通登录系统一样使用http表单,不同的页面为不同类型的用户显示不同的内容。我搜索了一下,我知道一些基本知识,但还不够。

这就是我得到的:

  • 我们检查用户并从 在数据库中发布数据
  • 如果正确,我们将给客户端一个新会话,并将其保存在数据库中
  • 客户端将会话保存为cookie,并在每个页面请求中发送它
  • 服务器检查会话并提供用户想要的内容
  • 以下是我不知道的部分:

    • 我们如何生成会话
    • 我们如何将其发送给客户
    • 它是如何保存在cookies中的
    • 什么时候到期
    • 如果过期怎么办?什么 我们该怎么办
    • 还有什么我应该做的吗 知道吗
    如果可以,请在node中给我一些示例。
    提前感谢:D

    • 会话只是与对象/数组关联的唯一键(会话ID),通过这种方式,您可以将数据连接到站点的用户
    • 您将会话ID作为cookie发送到客户端,一旦发送,客户端将其会话ID随每个HTTP请求一起发送到服务器
    • 发送HTTP
      Set Cookie
      头(
      Set Cookie:sessionid=abcdefg38974
    • 您可以在需要时、浏览器关闭时或一年后使其过期(这将使您登录一年,之后您必须再次登录)
    • 当cookie过期时,它被简单地丢弃,在服务器端,它看起来就像用户还没有设置会话ID,所以他必须再次登录
    • 您应该知道会话劫持(窃取他人的会话ID)之类的事情。看一看
    举个小例子,它可能会在您每次请求时将访问次数增加两次,因为您的浏览器也请求
    /favicon.ico
    。请记住,这个示例不是很安全,因为会话劫持是可能的,这也会将所有会话保留在内存中,并在服务器重新启动时忘记它们。明智的做法是将会话保存到数据库中

    var http=require('http');
    var会话={};
    http.createServer(函数(req,res){
    var-ssid;
    var会议;
    if(请求头文件cookie){
    //Cookie已设置,请阅读
    var parts=req.headers.cookie.split('=');
    ssid=零件[1];
    //我们是否知道会话id?
    if(会话类型[ssid])!=“未定义”){
    会话=会话[ssid];
    log('加载了id为'+ssid'的会话);
    }
    }
    if(会话类型)=“未定义”){
    //没有饼干,做一个吧
    ssid=Math.random();
    会话={
    “visitNumber”:0
    }
    log('创建了id为'+ssid'的会话);
    }
    session.visitNumber++;
    //响应浏览器
    文书标题(200{
    “内容类型”:“文本/普通”,
    “设置Cookie”:“ssid=”+ssid
    });
    res.end('就诊号码:'+session.visitNumber+'\n');
    //保存我们对会话数据所做的更改
    会话[ssid]=会话;
    }).听(8080);
    
    请不要为网站编写自己的登录系统。你可以这样做学习,但我现在要告诉你,你的网站将是非常不安全的。你应该使用类似的东西,它使用第三方,如facebook、twitter、google来为你处理身份验证。他们的船上有安全专家,他们知道如何保存系统,以及在受到威胁时该怎么做。