我不确定我做的是不是错了,或者我错过了某个地方的注释或配置项.情况如下:
我有一个JSF应用程序与一个名为session的作用域bean SessionData.这个bean ApplicationData在创建时注入了一个应用程序范围的bean引用(类型).首次创建会话时,这可以正常工作.依赖注入是使用文件中的<managed-bean>元素完成的,faces-config.xml如下所示:
<managed-bean>
<managed-bean-name>sessionData</managed-bean-name>
<managed-bean-class>my.package.SessionData</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>applicationData</property-name>
<property-class>my.package.ApplicationData</property-class>
<value>#{applicationData}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>applicationData</managed-bean-name>
<managed-bean-class>my.package.ApplicationData</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
因为在序列化时我的SessionData对象包含ApplicationData对象没有意义,所以我在对象中将ApplicationData引用标记为瞬态SessionData:
transient private ApplicationData applicationData;
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到Web应用程序停止(在我的Tomcat 6.x容器中)并且会话被序列化.当我重新启动应用程序并反序列化会话时,我的引用ApplicationData不会被JSF重新注入.我知道反序列化应该留下没有值的瞬态字段.有没有办法告诉JSF这个会话范围的对象要求在反序列化后再次设置其依赖项?
我使用MyFaces JSF 1.2和Tomcat 6.0.26作为我的Web应用程序容器.
是否可以从JavaScript中读取像httpRequest.getSession("attr_name")这样的动态变量的值?
我想要求用户在访问我的GAE(Google App Engine)应用程序的某些部分时使用登录名/密码.我想限制对预定义用户集的访问,例如在页面上,可以将新数据上载到数据存储区.
我发现有在GAE 3种方式如何可以解决的,但它看起来像只有最后一个(最复杂),可能是我的问题的解决方案:
使用部署描述符(<security-constraint>在web.xml中).这并不好,因为这些用户可以访问,即使是GAE应用程序管理页面的查看者,他们也可以看到帐单历史记录,浏览数据存储区,日志等等,这是我必须避免的.
使用联合登录(Open ID)(https://developers.google.com/appengine/articles/openid)并允许用户使用他们的Google,Yahoo!或其他登录身份.它不是一个解决方案,因为我想限制对一小组用户的访问(最多5个)并且不允许每个人使用该应用程序.
另一个选项是创建只能通过HTTPS访问的简单自定义登录页面,并让用户在POST请求中发送用户名和密码(它可以很简单,因为我们有安全的https连接)到servlet,在servlet上生成一些会话标识符具有指定的有效性并使其成为每个后续请求的一部分.如果会话标识符存在且同时未手动过期,则还需要在用户每次发送GET或POST请求时进行检查.
关于如何维护管理员帐户的任何其他/更好的建议?可以HttpSession帮助最后一个变种?
亲切的问候,STeN
authentication google-app-engine servlets httpsession google-openid
我们有两台服务器用于负载平衡.有时,在成功登录我们的应用程序后,我们会收到无效会话,即使会话超时配置为30分钟,用户会话也已过期.我们不确定是否在其中一个服务器中发生了身份验证,后续请求是否发送到另一个服务器.这似乎是随机的,不会发生在所有用户身上.
注意到仅在所选网络中发生无效会话.我们的应用程序可在印度各地的21家商店中访问.其中7家商店有这个问题,甚至所有商店都使用Airtel网络.我们的应用程序在我的办公室网络和airtel数据卡中正常工作.但是在我的笔记本电脑上使用Jio网络连接时遇到了奇怪的问题.如何在Jio网络中发生这种情况?
Language: Java
Run Code Online (Sandbox Code Playgroud)
Framework: Spring
Server: Jboss 7.1.1
Run Code Online (Sandbox Code Playgroud) 是否可以在J2EE应用程序(EAR)中配置两个单独的Web应用程序(WAR)来访问共享会话上下文?
更多信息:
我最终从EAR创建了一个共享类,它将所需信息存储在静态成员中.即使它看起来像是一个肮脏的黑客,这也成功了.
我刚刚完成了Web应用程序的期末考试.对于那些相当简单(虽然很长 - 12页)考试而言,这是一个问题,要求我们编写会话的实现,类似于javax.http.HttpSession所做的.
我不想承认,它让我难过.我使用HashMap制作了一个相当简单的BS实现,并且使用随机cookie字符串映射到服务器上的序列化HashMap做了一些疯狂,但我很确定它是假的...现在我很想知道它是如何实际的完成.
特别是作为一个广泛使用PHP的人,但无论出于何种原因从未费心去学习方便背后的魔力,我非常有兴趣了解更多关于会话的底层实现.J2EE和PHP肯定,但任何其他语言/框架也很棒.谢谢!
我想在Grails中列出管理控制器中的所有当前会话.从控制器获取引用集合的最简单方法是什么?
我进行了以下简单的测试:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["dt"] == null)
Session["dt"] = DateTime.Now;
Session["dt"] = ((DateTime)Session["dt"]).AddYears(1);
Response.Write(Session["dt"].ToString());
}
Run Code Online (Sandbox Code Playgroud)
并发回发的结果如下:
1- 13/11/2015 10:00:00 2- 13/11/2016 10:00:00 3- 13/11/2017 10:00:00 4- 13/11/2018 10:00:00 5- 13/11/2019 10:00:00 6- 13/11/2020 10:00:00 ...
这清楚地表明会话变量正在更新.在MSDN上,您可以找到以下内容:http: //msdn.microsoft.com/en-us/library/ms178581(v = vs.100).aspx
您可以通过将会话状态模式设置为Off来禁用应用程序的会话状态.如果要仅为应用程序的特定页面禁用会话状态,可以将@Page指令中的EnableSessionState值设置为false.EnableSessionState值也可以设置为ReadOnly,以提供对会话变量的只读访问.
我们几乎在应用程序的每个页面上执行读/写操作.但是,这会阻止同时为同一客户端运行两个http请求.第一个请求应该完成,直到服务器处理第二个请求.经过一些研究,显然是由于会话的独占锁定.为了好奇,我们尝试将会话状态设置为ReadOnly,似乎仍然可以编辑,没有定义独占锁.
问题:
1- Readonly是否意味着Readonly(因此这里有一个asp中的错误)或者其他的东西?
2-只要会话似乎可以使用ReadOnly状态编辑,有什么可担心的,你认为在生产环境中继续使用它是否安全?
谢谢
我有一个Shiro会话(id = 11111)和一个http会话(id = 22222).
当我尝试使HttpSession无效时,使用了错误的id.
码:
public void logout() {
SecurityUtils.getSubject().logout();
// exception is thrown in this line
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
}
例外:
java.lang.IllegalStateException: org.apache.shiro.session.UnknownSessionException: There is no session with id [22222]
如何使HttpSession无效或者设置正确的ID?
我最近正在努力学习Spring MVC.似乎我不太了解@ModelAttribute注释和HttpSession的功能.
@SessionAttributes({"shoppingCart", "count"})
public class ItemController {
@ModelAttribute("shoppingCart")
public List<Item> createShoppingCart() {
return new ArrayList<Item>();
}
@ModelAttribute("count")
public Integer createCount() {
return 0;
}
@RequestMapping(value="/addToCart/{itemId}", method=RequestMethod.GET)
public ModelAndView addToCart(@PathVariable("itemId") Item item,
@ModelAttribute("shoppingCart") List<Item> shoppingCart, @ModelAttribute("count") Integer count) {
if(item != null) {
shoppingCart.add(item);
count = count + 1;
}
return new ModelAndView(new RedirectView("showAllItems")).addObject("count", count);
}
@RequestMapping(value="/deleteFromCart/{itemId}", method=RequestMethod.GET)
public ModelAndView deleteFromCart(@PathVariable("itemId") Item item,
HttpSession session) {
List<Item> list = (List<Item>) session.getAttribute("shoppingCart");
list.remove(item);
//session.setAttribute("shoppingCart", list);
Integer count = (Integer) session.getAttribute("count");
count …Run Code Online (Sandbox Code Playgroud) spring session-variables spring-mvc httpsession modelattribute
httpsession ×10
session ×4
java ×3
java-ee ×2
spring ×2
asp.net ×1
controller ×1
grails ×1
inproc ×1
javascript ×1
jboss7.x ×1
jsf ×1
php ×1
servlets ×1
shiro ×1
spring-mvc ×1
war ×1