java - 如何在servlet中获取登录密码

标签 java servlets jakarta-mail

我已经成功实现了基于表单的身份验证,现在我想获取用户名和密码以从 servlet 初始化 javamail 中的 session 对象。我怎样才能做到这一点?我可以使用 request.getRemoteUser() 方法获取登录用户名,但我不知道如何获取密码。

如果我创建任何 session 对象,例如:

authentication = new PasswordAuthentication(user,password);
Properties props = new Properties();
props.put("mail.host", "localhost");
props.put("mail.debug",true);
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp"); 
Session session = Session.getInstance(props, this);

如果我不将任何密码从 servlet 传递到 PasswordAuthentication 对象,那么如何根据特定的用户名和密码从邮件服务器获取收件箱消息?

最佳答案

Java EE/Servlet API 不允许这样做。您需要从与容器相同的用户密码源中按用户名获取密码,或者将用户密码源外部化,以便容器和您的代码都可以使用它,例如数据库。使用“Realm”关键字检查相关容器的文档。由于您似乎使用 Tomcat(根据您的问题历史记录),here是一个 Tomcat 目标示例,例如查看 JDBCRealm .

关于java - 如何在servlet中获取登录密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555917/

相关文章:

Java:发送附件电子邮件时出现异常

java - 为什么我的 TimerTask.cancel() 返回 NPE ? (JAVA)

java - 如何为 Apache Ignite v1.7 设置 JVM 最大堆内存?

java - 如何创建响应鼠标点击的 java swing Graphic 对象?

java - httpclient 4如何获取字节

java - 通过 Java 发送邮件时出现异常

java - 从字节数组创建文件对象时指定文件名(不创建物理文件)

java - 如何使用通配符名称发现 Java jar 中的资源?

java servlet PrintWriter#flush 停止抛出异常

html - 表行上的单选按钮组