- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个动态Web项目,用户首先注册,然后他可以登录
在LoginServlet中我已经创建了一个用于请求用户的 session
他也可以在这里更改密码我使用了一个文本文件在本地系统中存储用户数据
我的问题是我无法在更改密码servlet中应用逻辑,看看这个servlet,因为我提到无法应用逻辑,我如何验证文本文件中的用户数据,并与旧通行证新密码和重复密码进行比较并更新新密码。
HomePageHtml
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>HomePage</h1>
<a href="Registration.html">Click to Register</a><br>
<a href="LogIn.html">Click to Login</a>
</body>
</html>
changePasswordHtml
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>changePassword</h1>
<form action="changePassword" method="post">
Enter Your OldPassword<input type="password" name="pass"><br>
Enter Your NewPassword<input type="password" name="npass"><br>
Enter Your Password<input type="password" name="rpass"><br>
<input type="submit">
</form>
</body>
</html>
LogInServlet
package com.satateMng.com;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LogInServlet
*/
public class LogInServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LogInServlet() {
super();
System.out.println("In no-arg constr() of LS");
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("In doGet() of LS");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("In doPost() of Ls");
/*
* access user inputs validate if validation succeed,create session and
* store email if validation failed,show error msg
*/
String email = request.getParameter("email");
String pass = request.getParameter("pass");
StringBuilder sb = new StringBuilder();
if (email == null || email.trim().equals(""))
sb.append("Enter Correct email<br/>");
if (pass == null || pass.trim().equals(""))
sb.append("Enter your password<br/>");
PrintWriter pw = response.getWriter();
String msg = sb.toString();
if (!msg.equals("")) {
// validation failed
pw.write("<html><body><h1><b>" + msg + "</b></h1></body></html>");
}
else
{
// success
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(Constants.USERFILE));
String line;
while ((line = br.readLine()) != null)
{
System.out.println("coming line=" + line);
String[] sa=line.split("=");
if (email.equals(sa[0]) && pass.equals(sa[1]))
{
// valid user
// create session
HttpSession session = request.getSession(true);
session.setAttribute(Constants.USER, email);
pw.write("<html><body><h1>Welcome " + email+ " </h1><a href='logout'>LogOut</a><br/><a href='ChangePassword.html'>Change Password</a></body></html>");
return;
}
}
pw.write(
"<html><body><h1><b>Your email/password combination is incorrect!try again..</b></h1></body></html>");
}
catch (IOException e)
{
// TODO: handle exception
e.printStackTrace();
pw.write("<html><body><h1>Error</h1><b>Oops something gone complex" + e.getMessage()
+ "</b></body></html>");
return;
}
finally
{
if (br != null)
br.close();
}
}
}
}
ChangePasswordServlet
package com.satateMng.com;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class ChangePasswordServlet
*/
public class ChangePasswordServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ChangePasswordServlet() {
super();
System.out.println("In no-arg constr() of CP..");
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("In doPost() of CP..");
/*
* get the session for client
* if session doesn't exist,then scold the user
* if session exist,open the file,validate if old password is correct and
* then update the file contents to reflect new password change for email id of user
*
*/
HttpSession session=request.getSession(false);
PrintWriter pw=response.getWriter();
if(session==null)
{
pw.write("<html><body><h1>we dont know who you are..</h1></body></html>");
}
else
{
String email=(String) session.getAttribute(Constants.USER);
String opass=request.getParameter("pass");
String npass=request.getParameter("npass");
String rpass=request.getParameter("rpass");
/*
* validate if email is correct by looking into file
* and then update
*/
BufferedReader br=null;
try
{
br=new BufferedReader(new FileReader(Constants.USERFILE));
String line=br.readLine();
while(line!=null)
{
System.out.println("coming line"+line);
String[] sa=line.split("=");
if(email.equals(sa[0]) || opass.equals(sa[1]))
{
//not able to apply logic what I should write code over here thank you
}
}
}
catch(IOException e)
{
// TODO: handle exception
e.printStackTrace();
}
finally
{
if(br!=null)
br.close();
}
pw.write("<html><body><h1><b>your password has changed successfully..</b></h1></body></html>");
}
}
}
最佳答案
检查用户的电子邮件和旧密码是否正确后,您可以检查npass
是否等于rpass
,如果是这样,则只需更新密码,否则如果两者不同,则向用户发送消息,密码不相同。即:
if(email.equals(sa[0]) && opass.equals(sa[1]))
{
//if new password and retype password is same do below
if(npass.equals(rpass)){
//write your update code
BufferedWriter bw = null;
try
{
bw = new BufferedWriter(new FileWriter(Constants.USERFILE));
bw.write(rpass);
bw.newLine();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (bw != null)
bw.close();
}
}
}
else
{
//if new password and retype password is not same
if(!npass.equals(rpass)){
//setting some message
request.setAttribute("passerrormsg2", "Password Mismatch");
//redirect to changePassword.Html
}
//if old pass is not equal
if( !opass.equals(sa[1])){
//set some message
request.setAttribute("passerrormsg1", "Old Password is not correct");
//redirect to changePassword.html
}
}
关于java - 当用户登录并想要用新密码更改旧密码时如何验证用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60077344/
Internal Server Error: /admin/account/customuser/add/ Traceback (most recent call last): File "C:\
有问题!虽然我发现几乎相似的线程但没有帮助:( 我编写了一个 php 脚本来从我的 MySQL 数据库中获取注册用户的数量。该脚本在我的本地主机上运行良好;它使用给定的用户名、密码和主机名,分别是“r
我正在做一项基于密码的作业,我将 key 和消息放在单独的数组中。我想创建第三个数组,其中包含围绕消息大小的 key ,如下所示: message keykeyk 我已经在这个问题上苦苦挣扎了一段时间
我的几个客户要求我实现图形密码检查器,例如 关于如何实现这种 UI 有什么想法吗? 最佳答案 试着看看这个:https://code.google.com/p/android-lockpattern/
我正在使用 MAMP,每次登录 phpMyAdmin 时,都会收到以下错误/警告消息: the configuration file now needs a secret passphrase (bl
我正在尝试通过将 Visual Studio 2013 连接到我的测试机来调试 WDF 驱动程序。它创建一个名为 WDKRemoteUser 的用户,并在进行测试时尝试自动登录。有人知道这个用户的密码
使用具有指定用户名和密码的 SVN 提交。我希望服务器抛出错误;所以我可以告诉我的用户他/她的密码错误。 相反,在使用错误密码提交后: svn commit "test_file.txt" --use
我正在尝试实现 friend 推荐。 它从节点“你”开始。而且,我想找到节点“安娜”。 换句话说,这是我的两个或更多 friend 共同认识的人。上面的示例节点是 Anna。 如果您的帮助,我将不胜感
我都尝试过 wget --user=myuser --password=mypassword myfile 和 wget --ftp-user=myuser --ftp-password=mypass
我的一位用户提示说,每当他尝试使用默认管理界面(Django 的管理员)添加新用户(auth.User)时,新用户名和密码都会自动填充他自己的。 问题是他在登录时要求 Firefox 记住他的用户名/
我们正在开发一款应用(当然)用于应用购买 (IAP)。我已完成指南中的所有操作以启用 iap,并且一切正常,直到我想要购买为止。 部分代码: MainViewController.m -(vo
我试图创建两个可选匹配项的并集(如下所示),但我得到的不是并集,而是两者的交集。我应该如何更改此查询以获得所需的联合? optional match (a:PA)-[r2:network*2]-(b:
我想将Ansible用作另一个Python软件的一部分。在该软件中,我有一个包含其用户名/密码的主机列表。 有没有一种方法可以将SSH连接的用户/密码传递给Ansible ad-hoc命令或以加密方式
嗨,我在使用xampp的Apache Web服务器上收到错误500。直到我使用.htaccess,.htpasswd文件,错误才出现。我搜索了,但找不到语法错误。我只有1张图片和要保护的索引文件。以下
我一直使用它来编辑用户帐户信息: $this->validate($request, [ 'password' => 'min:6', 'password_confirmation'
我需要使用InstallUtil来安装C# Windows服务。我需要设置服务登录凭据(用户名和密码)。这一切都需要默默地完成。 有没有办法做这样的事情: installutil.exe myserv
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
如果我有一个随机的、16 个字符长的字母数字盐(不同大小写),它是为每个用户生成和存储的,我是否还需要一个站点范围的盐? 换句话说,这样好吗? sha1($user_salt . $password)
我正在开发一个空白程序,该程序将允许用户创建一个帐户,以便他们可以存储其余额和提款/存款。用户输入用户名和密码后,如何存储这些信息以便用户可以登录并查看其余额?我不一定要尝试使其非常安全,我只是希望能
我正在尝试寻找一种通用方法来搜索没有链接到另一个节点或节点集的节点或节点集。例如,我能够找到特定类型(例如 :Style)的所有节点,这些节点以某种方式连接到一组特定的节点(例如 :MetadataR
我是一名优秀的程序员,十分优秀!