更新对象属性

2024-03-16

我正在使用 Struts 2,我的问题是我不想更新所有对象属性,因为我得到了一些敏感数据。

这是我的代码示例

public class person {
  private name;
  private email;
  private password;
}

例如,在我的表单中,我显示要更新的姓名和电子邮件,因此当我在提交后更新我的人员属性时,该人员的密码属性的值为 null,但是当我将属性密码放入<s:hidden>表单中的标记更新工作正常。

如何让Struts 2记住密码的值而不使用表单中的隐藏标签?


如果您需要存储以下信息

  • 必须在请求中保持不变;
  • 不得在页面中显示;

那么你必须使用会话 http://www.splinter.com.au/how-to-use-sessions-with-struts-2/,通过实施SessionAware:


也就是说,我不确定您是否应该存储用户密码,也不应该将密码与用户相关联;

您应该在您的Web应用程序中创建一个登录页面,仅处理该操作中的密码,根据数据库(或其他)验证它,并在会话中存储一些身份验证ID,而不是密码本身(您不会验证用户再次强调,除非会话过期,否则用户将被重定向到登录页面...无需将密码保存在内存中)。


也就是说,用户身份验证的最佳实践不鼓励根据数据库中存储的密码来验证输入的密码;

你应该使用一些单向散列算法 http://en.wikipedia.org/wiki/Cryptographic_hash_function (加盐 http://en.wikipedia.org/wiki/Salt_%28cryptography%29阻止Rainbow Tables 攻击)对密码进行哈希处理,并根据数据库中的哈希密码进行检查。这样,即使是数据库管理员也无法知道用户的密码,并且如果忘记密码,它将被重置,而不是检索。

在 Java 中最好的实现之一是jBCrypt http://www.mindrot.org/projects/jBCrypt/, 基于BCrypt http://en.wikipedia.org/wiki/Bcrypt.

希望有帮助...


EDIT

作为从概念上分离 Web 应用程序中处理的对象的一种方法,您可以使用两种不同的 Bean:一个用于读取的“完整 Bean”,包含所有属性;一个用于写入的“子集 Bean”,仅包含可以读取的属性。改变。

例如,ID 和密码不应更改...您可以从数据库读取“完整”,然后写入 JSP,然后写入数据库“子集”(除了在用户注册中,您将在其中写入完整)。 ..

为了更容易理解,Full Bean 是Dao对象精确映射数据库字段,而子集 Bean 是一个Presentation对象,您将通过仅从 Dao 对象复制所需的属性来创建该对象...它们都是 DTO,但具有两个不同级别的语义。

否则,只需将您的 bean 放入会话中,它只是一行代码,就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新对象属性 的相关文章

  • C#:询问用户密码,然后将其存储在 SecureString 中

    在我目前为客户开发的小型应用程序中 我需要询问用户他的 Windows 登录用户名 密码和域 然后使用这些信息系统 诊断 进程 启动启动一个应用程序 我有一个带有 UseSystemPasswordChar 的文本框来屏蔽输入的密码 我需要
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 为什么 Thread.Sleep() 在 SerialPort.Open 和 Close 之前?

    我注意到我在 SerialPort 关闭和打开时读到的示例代码 人们会在 SerialPort Open 和 Close 之前添加 Thread Sleep 1000 就像下面这样 Thread Sleep 1000 serialPort1
  • jqgrid更改列标题属性

    当我将鼠标悬停在特定单元格值上时 悬停值与单元格值相同 我可以更改与单元格值不同的悬停文本吗 Thanks 您可以在列的 colModel 中使用 cellattr 属性来设置自定义工具提示 例如 cellattr function ret
  • QMenu 中 QActions 的 QTooltip

    我希望能够显示工具提示QMenu items QActions 我取得的最好成绩是连接悬停信号QAction to a QTooltip show connect action QAction hovered QToolTip showTe
  • Nodejs Express fs 将文件迭代到数组或对象失败

    因此 我尝试使用 Nodejs Express FS 模块来迭代我的应用程序中的目录 将每个文件名存储在一个数组中 我可以将其传递到我的 Express 视图并迭代列表 但我很难做到这一点 当我在 files forEach 函数循环中执行
  • Sql Server Case 语句在用户定义函数中给出错误

    我想在用户定义的函数中使用 case 语句 因为我需要匹配多个术语 我可以使用表格进行匹配 但随后我无法将其放入计算列定义中 这适用于 IF 语句 CREATE FUNCTION MaraSizeNumber ms varchar RETU
  • 将 auto_ptr<> 与数组一起使用

    我在用着auto ptr lt gt 它使用类指针类型的数组 那么如何为其赋值 e g auto ptr
  • Rails ruby​​ - 未找到 cap 命令

    我正在尝试使用 Rubber 将示例应用程序部署到 Amazon EC2 我也在关注 Rubber 的 Railscasts 剧集 到目前为止 我已经安装了 gem 运行了 vulcaznize 命令 并对rubber yml 文件进行了修
  • 如何防止tinyMCE粘贴事件?

    如果编辑器当前内容的长度加上要粘贴的单词的长度超过指定的限制 我需要阻止tinyMCE的粘贴事件 我该怎么做 谢谢 我错了 我不需要阻止或禁用tinyMCE 中的粘贴来执行此操作 我用了他们的paste插件并在粘贴之前修改了内容 funct
  • 显式 int 类型作为参数

    是否可以将函数写为 void func uint64 t val template
  • 如何使用 jQuery 设置动态文本框的只读属性?

    我正在尝试从数据库值填充文本框 并且我想将文本框值设置为只读 当用户单击 编辑 选项时 将所有文本框设置为可编辑 我没能做到这一点 这是我的 HTML 代码
  • 使用 Immutable 对普通对象进行深度访问

    考虑以下示例 const stickers new OrderedMap set 1 hero batman name Bruce stickers getIn 1 gt hero batman name Bruce stickers ge
  • REST 服务返回错误的内容类型并解组

    我正在使用 RESTEasy 更具体地说 是他们框架的客户端 我正在调用第三方 Web 服务 它会返回一些 JSON 代码 但是 出于某些充分的原因 他们响应中的内容类型是 text javascript 我如何告诉 RESTEasy 它应
  • 带撇号的单词的正则表达式 (Java)

    我正在尝试找出正则表达式来匹配仅包含字母和撇号的字符串 如果一个字符串包含撇号 我只想匹配它两边都有一个字母 到目前为止我所拥有的是 a zA Z a zA Z 我想匹配如下字符串 a a aa a a aaa But not bb bb
  • 将 Service Fabric 应用程序发布到 Azure 时操作超时

    当我尝试将 Service Fabric 应用程序发布到 Azure 群集时 收到以下错误消息 3 gt Copy ServiceFabricApplicationPackage Operation timed out 3 gt At C
  • Mongodb concat int 和 string

    我正在尝试为我的集合中大小为 50 mb 及以上的所有文件投影 FileName 和 FileSize 但我无法连接 FileSize 类型 因为它的类型为 Int 我希望投影是 result id ObjectId 5652c399a21
  • 将 Python Keras NLP 模型转换为 Tensorflowjs

    我正在尝试了解有关 Tensorflowjs 的更多信息 但遗憾的是我无法将 Keras NLP 模型转换为 Tensorflowjs 这就是我想要转换的 from keras models import load model from k
  • Jqgrid 页脚文本格式问题

    在 Jqgrid 中 我已将某些列设置为链接 对于这些列 我还设置了页脚 MAX 但问题是 配置的链接也被添加到页脚值中 这是意料之外的 任何帮助表示赞赏 提前致谢 我认为问题是how您添加页脚信息 如果你使用页脚数据 http www t
  • 无法将文件从 DBFS 复制到 Databricks 中的本地桌面

    我想将文件从 dbfs 保存或复制到我的桌面 本地 我使用此命令但收到错误 dbutils fs cp dbfs username test txt C Users username Desktop Error SyntaxError un
  • 有没有办法通过 Express + Node.js 使用多个视图引擎

    Scenario 我使用开发了一些交易页面Node js http nodejs org Express http expressjs com 车把 http handlebarsjs com 作为视图引擎和MongoDB http www
  • 更新对象属性

    我正在使用 Struts 2 我的问题是我不想更新所有对象属性 因为我得到了一些敏感数据 这是我的代码示例 public class person private name private email private password 例如