Questions tagged «session»

会话是指单个客户端和服务器之间的通信。会话是特定于用户的,并且为每个用户创建一个新会话以跟踪该用户的所有请求。

12
已经开始的PHP会话
在我的PHP代码中,如果一个会话已经开始,而我尝试启动一个新会话,则会收到以下通知: 注意:会话已经开始-忽略session_start() 如何避免这种情况?
81 php  session 

3
未在Flask会话中使用Flask-Session扩展名设置秘密密钥
现在,我正在使用烧瓶第3方库Flask-Session,但没有运气可以正常工作。 当我连接到我的站点时,出现以下错误: RuntimeError:会话不可用,因为未设置任何秘密密钥。将应用程序上的secret_key设置为唯一且秘密的内容。 下面是我的服务器代码。 from flask import Flask, session from flask.ext.session import Session SESSION_TYPE = 'memcache' app = Flask(__name__) sess = Session() nextId = 0 def verifySessionId(): global nextId if not 'userId' in session: session['userId'] = nextId nextId += 1 sessionId = session['userId'] print ("set userid[" + str(session['userId']) + "]") …
79 python  session  flask 

12
确定会话变量在C#中为null或为空的最佳方法是什么?
检查ASP.NET C#中是否存在会话变量的最佳方法是什么? 我喜欢将String.IsNullOrEmpty()工程用于字符串,并且想知道是否有类似的方法Session。目前,我所知道的唯一方法是: var session; if (Session["variable"] != null) { session = Session["variable"].ToString(); } else { session = "set this"; Session["variable"] = session; }
79 c#  asp.net  session 

5
HttpServlet为什么实现Serializable?
在我对Servlet的理解中,该Servlet将由Container实例化,其init()方法将被调用一次,并且Servlet将像单例一样存活,直到JVM关闭。 我不希望我的servlet被序列化,因为当应用服务器恢复或正常启动时,它将被重新构造。该servlet不应该包含特定于会话的成员,因此将其写入磁盘并重新实例化是没有意义的。有实际用途吗? 我担心的是,我在其中放置了一些不可序列化的字段,然后我的应用程序将在生产环境中神秘地失败,在生产环境中将进行另一种会话复制。


6
传统Web应用程序和API中的身份验证,授权和会话管理
如果我错了,请纠正我:在传统的Web应用程序中,浏览器会自动将会话信息附加到服务器的请求中,以便服务器可以知道请求的来源。实际上究竟附加了什么? 但是,在基于API的应用程序中,此信息不会自动发送,因此在开发API时,我必须检查自己(例如,请求是否来自经过身份验证的用户)?通常如何做?

12
Rails:在Ruby on Rails中的模型中访问current_user
我需要在Ruby on Rails应用程序中实现细粒度的访问控制。单个用户的权限保存在数据库表中,我认为最好让各自的资源(即模型的实例)来决定是否允许某个用户对其进行读写。每次在控制器中做出这个决定肯定不会很干。 问题在于,为此,模型需要访问当前用户,才能调用。但是,模型通常无法访问会话数据。 may_read?(current_user, attribute_name) 有很多建议可以在当前线程中保存对当前用户的引用,例如在 本博客文章中。这肯定会解决问题。 不过,与Google相邻的结果建议我将对当前用户的引用保存在User类中,我想这是某人想到的,其应用程序不必一次容纳很多用户。;) 长话短说,我感觉到我希望从模型内部访问当前用户(即会话数据)是因为我做错了。 你能告诉我我错了吗?

10
允许php会话继承到子域
我对所有用户数据使用php会话(会话ID cookie除外,不是cookie),并且当用户进入其个人资料user.mydomain.com时,他们将立即“注销”,直到删除子域。 只要* .mydomain.com,有没有办法接受来自所有域的会话
75 php  apache  session  cookies 


3
如何关闭SQLAlchemy会话?
遵循我们在如何关闭MySQL中的sqlalchemy连接中的评论之后,我正在检查SQLAlchemy创建到我的数据库中的连接,如果不退出Python,我将无法关闭它们。 如果我在python控制台中运行此代码,它将保持会话打开状态,直到我退出python为止: from sqlalchemy.orm import sessionmaker from models import OneTable, get_engine engine = get_engine(database="mydb") session = sessionmaker(bind=engine)() results = session.query(OneTable.company_name).all() # some work with the data # session.close() 我发现要关闭它的唯一解决方法是engine.dispose()在最后调用。 根据我上面给出的链接中的评论,我的问题现在是: 为什么engine.dispose()需要关闭会议? 还session.close()不够吗

9
防止会话劫持
如何防止多个客户端使用相同的会话ID?我之所以这样询问,是因为我想增加一层安全保护,以防止网站上的会话劫持。如果黑客以某种方式找出另一个用户的会话ID并使用该SID发出请求,那么我如何检测到服务器上有不同的客户端共享一个SID,然后拒绝劫持尝试? 编辑 经过深思熟虑后,我接受了Gumbo的回答,因为我意识到由于无状态HTTP协议的限制,我所要求的是不可能的。我忘了HTTP的最基本原理是什么,现在我想到这个问题似乎有点琐碎。 让我详细说明一下: 用户A登录example.com后,为他提供了一些随机会话ID,为简单起见,将其设为“ abc123”。该会话ID在客户端存储为cookie,并通过服务器端会话进行验证,以确保登录的用户在从一个网页转到另一个网页时仍保持登录状态。如果HTTP不是无状态的,则该cookie当然不需要存在。因此,如果用户B窃取用户A的SID,并在其计算机上创建一个值为'abc123'的cookie,则他本可以成功劫持用户A的会话,但是服务器根本无法合法地识别出用户B的会话。该请求与用户A的请求有任何不同,因此服务器没有理由拒绝任何请求。即使我们要列出服务器上已经处于活动状态的会话,并尝试查看某人是否正在访问已处于活动状态的会话,我们如何才能确定是另一个用户在非法访问该会话而不是同一用户谁已经使用会话ID登录,但只是尝试使用它发出另一个请求(即导航到另一个网页)。我们不能。检查用户代理?可以被欺骗-但是作为深度防御措施还是不错的。IP地址?可以出于正当理由进行更改-但我建议不要检查IP地址的前两个八位位组,而不是根本不检查IP地址,因为即使是出于完全正当理由而不断更改IP的数据计划网络用户通常只具有其IP更改的最后两个八位位组。 最后,无状态HTTP谴责我们永远无法完全保护我们的网站免受会话劫持,但是良好的做法(如Gumbo提供的做法)将足以防止大多数会话攻击。因此,尝试通过拒绝同一SID的多个请求来保护会话免遭劫持,这简直是荒谬的,并且会破坏会话的整个目的。
70 php  security  session 

4
数组作为会话变量
是否可以在PHP中使数组成为会话变量? 情况是我有一个表(第1页),其中有些单元格具有指向特定页面的链接。下一页将列出名称(第2页,我想保留在会话数组中)及其相应的复选框。提交此表格后,它将进入一个交易页面(第3页,其中已发布复选框的值保存在数据库中以用于对应名称)。现在,如果我返回首页并单击另一个单元格,则会话数组将包含新名称列表还是旧名称列表?
69 php  arrays  session 


8
缓存与会话的优势
在会话和缓存中存储数据表有什么区别?优点和缺点是什么? 因此,如果它是一个简单的搜索页面,它会在数据表中返回结果并将其绑定到gridview。如果用户'a'搜索和用户'b'搜索,最好将其存储在Session中,因为每个用户很可能会有不同的结果,或者我是否仍可以将他们的每个搜索存储在Cache中,或者没有意义,因为存在只有一个缓存。我想基本上我想说的是缓存将被覆盖。

2
浏览器不会在付款网关向我们网站的发布请求中设置ASP.NET_SessionId cookie
我们的Web应用程序的付款过程遇到了一个奇怪的问题,该问题导致会话数据丢失。 在此过程中,一旦我们的结帐页面用户被重定向到付款提供商的页面,并在其完成操作后立即被重定向回到我们的网站(我们指定的网址)。最后的重定向是通过浏览器对付款服务提供商的html代码的评估来完成的,该html代码基本上由发布到我们网站的表单和几行在页面加载时发布的javascript代码组成。此时,浏览器发出了发布请求,但没有设置“ ASP.NET_SessionId” cookie,该cookie出现在对完全相同的域(我们的应用程序的域)的先前请求中。更奇怪的是,它设置了另一个我们使用的名为“ AcceptCookie”的cookie。它只是选择删除“ ASP.NET_SessionId” cookie。 为了说明这种情况,我拍摄了一些屏幕截图。(在这些屏幕截图中,橙色和绿色矩形包含完全相同的值。) 这是用户按下“签出”按钮时对我们的应用程序发出的请求。请求完成后,用户将被重定向到付款提供商的页面。 退房要求 这是付款提供商在用户那里完成后所提供的最终页面。如您所见,这只是一个简单的表单,页面加载后会自动发布到我们的域中。 支付提供商的最终回应 但是此发布请求不包括“ ASP.NET_SessionId” cookie,该cookie会导致获取新的会话ID并丢失先前的会话数据。同样,仅缺少“ ASP.NET_SessionId”,而没有另一个名为“ AcceptCookie”的对象。 发布将用户带回我们网站的请求(在上一步中使用javascript制作) 最后,我们发现在较旧版本的浏览器上不会发生此问题。在Firefox 52上,它像一个超级按钮一样工作,但是在Firefox 71上,发生了上述问题。 有任何想法吗? 注意:这是带有targetFramework =“ 4.5.2”的ASP.NET MVC应用程序 祝你今天愉快。
12 asp.net  session  cookies  id 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.