在java Web应用程序中管理用户操作的策略

时间:2011-11-24 13:44:10

标签: spring-mvc spring-security

上下文:Web应用程序 - Java,Spring MVC,Spring Security

对我来说不透明的是存储什么信息/如何在Web应用程序中执行某些操作(不要考虑当然的密码),例如我可以:

  1. 检索用户(数据库请求)并在会话中存储用户详细信息。
  2. 只需检索用户ID(db请求)并将其存储在会话中,并在需要时将其提取到DAO。将用户ID存储在会话中是否安全?
  3. 请求范围。不要在会话中存储任何东西。(当然spring仍然存储安全细节)如果用户请求操作 - 确定是否经过身份验证(?+角色),确定其id(db请求),将其提取到DAO。如果用户再次请求此操作,则必须重复步骤。
  4. 假设我的db表总是将int id作为主键。登录名只是唯一的。请不要局限于我的3种方法,这些都是非常简单的例子,我说的是数据存储/持久化(请不要将ORM与此上下文中的这个词相关联),这是db请求的组合,用于Web应用程序中服务器端的DTO。

    我认为我在会话中(或跨请求)存储的详细信息越多,我就越容易管理它,加上对数据库的请求减少。如果我以不识别特定用户的形式保留这些细节,那么应该没有问题吗?例如,如果我存储“id = 5; fruit_id [] = 1,4,7;(抱歉,如果语法错误)在会话中说”,它是否真的无法识别安全性是否被破坏?

1 个答案:

答案 0 :(得分:1)

您的问题有点模糊,只能根据具体细节正确回答。但是,通常可以在会话中存储用户详细信息,包括用户ID。可能是一个User对象,它反映了db的用户表中的任何字段/详细信息。存储身份验证级别或角色也是可以的。当然,您不应该在会话中存储太多的数据。