Session 我们如何在web应用程序中进行身份验证?
对不起,我写了很多来解释我的情况,如果你没有时间或者没有心情读这些,就跳到问题上来。即使回答其中一个问题也能帮助我解决问题,谢谢:DSession 我们如何在web应用程序中进行身份验证?,session,authentication,node.js,session-cookies,Session,Authentication,Node.js,Session Cookies,对不起,我写了很多来解释我的情况,如果你没有时间或者没有心情读这些,就跳到问题上来。即使回答其中一个问题也能帮助我解决问题,谢谢:D 我正试图在node.js中编写一个web应用程序,但由于我对web太陌生,我不知道如何编写web登录系统。我不想使用基本或摘要http身份验证,我希望它像普通登录系统一样使用http表单,不同的页面为不同类型的用户显示不同的内容。我搜索了一下,我知道一些基本知识,但还不够。 这就是我得到的: 我们检查用户并从 在数据库中发布数据 如果正确,我们将给客户端一个新会话
我正试图在node.js中编写一个web应用程序,但由于我对web太陌生,我不知道如何编写web登录系统。我不想使用基本或摘要http身份验证,我希望它像普通登录系统一样使用http表单,不同的页面为不同类型的用户显示不同的内容。我搜索了一下,我知道一些基本知识,但还不够。
这就是我得到的:
- 我们如何生成会话
- 我们如何将其发送给客户
- 它是如何保存在cookies中的
- 什么时候到期
- 如果过期怎么办?什么 我们该怎么办
- 还有什么我应该做的吗 知道吗
提前感谢: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来为你处理身份验证。他们的船上有安全专家,他们知道如何保存系统,以及在受到威胁时该怎么做。