NODE_Session

1.Seesion简介

  • 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
  • 服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。

2.Session和Cookie的区别

  • Cookie是把用户的数据写给用户的浏览器。
  • Session技术把用户的数据写到用户独占的session中。
  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
  • 建议:将登陆信息等重要信息存放为session、其他信息如果需要保留,可以放在cookie中

3.Session的属性

  • 安装: npm install express-session
  • 属性:
属性含义
name设置 cookie 中,保存 session 的字段名称,默认为 connect.sid 。
storesession 的存储方式,默认存放在内存中,也可以使用 redis,mongodb 等。express 生态中都有相应模块的支持。
secret通过设置的 secret 字符串,来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改。
cookie设置存放 session id 的 cookie 的相关选项,默认为 (default: { path: ‘/’, httpOnly: true, secure: false, maxAge: null })
genid产生一个新的 session_id 时,所使用的函数, 默认使用 uid2 这个 npm 包。
rolling每个请求都重新设置一个 cookie,默认为 false。
resave即使 session 没有被修改,也保存 session 值,默认为 true。
saveUninitialized强制将未初始化的 session 存储。当新建了一个 session 且未设定属性或值时,它就处于未初始化状态。在设定一个 cookie 前,这对于登陆验证,减轻服务端存储压力,权限控制是有帮助的。(默认:true)。建议手动添加。
  • 常用方法
req.session.destroy(function(err) {//销毁session
}
req.session.username='张三'; //设置 session
req.session.username //获取 session
req.session.cookie.maxAge=0; //重新设置 cookie 的过期时间
  • 示例
var express = require('express');
var session = require('session');
var app = express();

app.use(session({
    secret: 'hubwiz app', //secret的值建议使用随机字符串
    cookie: {maxAge: 60 * 1000 * 30}, // 过期时间(毫秒)
    rolling: true
}));
app.get('/', function (req, res) {
    if (req.session.sign) {//检查用户是否已经登录
        console.log(req.session);//打印session的值
        res.send('welecome <strong>' + req.session.name + '</strong>, 欢迎你再次登录');
    } else {//否则展示index页面
        req.session.sign = true;
        req.session.name = '汇智网';
        res.end('欢迎登陆!');
    }
});
app.listen(80);

转载:cnodejs

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在你的代码中,变量node_id在每次迭代时都被重新赋值为新的uuid.uuid4(),这就导致了每个节点的id都是唯一的,但是你只能获取最后一个节点的属性,因为在最后一次迭代后,node_id被赋值为最后一个节点的id。因此,当你在使用nx.get_node_attributes()方法时,只能获取最后一个节点的属性,其他节点的属性将无法获取。要解决这个问题,你需要在添加节点时将node_id与节点属性关联起来,可以使用一个字典来存储节点id和属性的键值对,这样就可以根据节点id获取其属性了。以下是修改后的代码示例: ```python driver = GraphDatabase.driver("neo4j://localhost:7687") # 从Neo4j数据库中读取实体及其属性 #景点实体 with driver.session() as session: result = session.run("MATCH (n:attraction) RETURN n.id as id, n.name as name, n.time_reference as time_reference, n.address as address, n.open_time as open_time, n.ticket as ticket, n.region as region, n.lon as lon,n.lat as lat").data() # 将实体转换为图形结构 G = nx.Graph() node_attr_dict = {} # 存储节点属性的字典 for record in result: node_id = str(uuid.uuid4()) G.add_node(node_id) # 添加节点 node_attr_dict[node_id] = {'name': record["name"], 'time_reference': record["time_reference"], 'address': record["address"], 'open_time': record["open_time"], 'ticket': record["ticket"], 'region': record["region"], 'lon': record["lon"], 'lat': record["lat"]} # 存储节点属性 nx.set_node_attributes(G, node_attr_dict) # 将节点属性与图关联起来 attributes = nx.get_node_attributes(G, node_id) ``` 这样,你就可以通过节点id获取其属性了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值