Java论坛网»Java技术»使用Struts开发强制修改用户密码问题,急急急!!请教各位的帮助!
使用Struts开发强制修改用户密码问题,急急急!!请教各位的帮助!
问?:
我现在有这么一个需求,但现在还没有很好的解决~
需求是这样的,我所做的系统中有一个密码管理策略,必须符合两条规定:
1,用户在第一次登录时必须强制修改密码
2,密码在一个月后将失效,用户登录时也强制修改密码
本着这个需求的原则,我在后台对该需求进行了判断,一旦不符合上述两条规则,则forward到密码修改页面
代码如下所示:
if (loginResult.equals("1")) {
...
} else if (loginResult.equals("2")){
return actionMapping.findForward("modPwd"); //forward至修改密码页面
}
在程序运行过程当中,用户第一次登录或密码超过30天,自动跳转到修改密码页面,并将登录时输入的密码自动填充到原密码文本框中,因为为同一属性 passwd。至此我认为一切正常。于是输入新密码,在这个页面提交时,问题来了,居然直接返回到登录页面,程序没有调用 changePasswdAction,后台也没有错误信息,页面代码如下所示:
<html:form action="/changePasswdAction.do" method="POST">
<tr>
<td>原密码</td>
<td><html:password property="passwd"/></td>
</tr>
<tr>
<td>新密码</td>
<td><html:password property="newPasswd"/></td>
</tr>
<tr>
<td>确认新密码</td>
<td><html:password property="confirmPasswd"/></td>
</tr>
<tr>
<td></td>
<td><html:submit property="submit" value="修改"/>
<html:reset value ="重置"/></td>
</tr>
</table>
</html:form>
Struts-config.xml代码如下所示:
<action input="/login.jsp" name="userForm" path="/userAction" scope="request" type="com.sfexpress.cdh.action.UserAction">
<forward name="ok" path="/main.jsp" />
<forward name="fail" path="/login.jsp" />
<forward name="modPwd" path="/changePasswd.jsp" />
</action>
<action input="/changePasswd.jsp" name="userForm" path="/changePasswdAction" scope="request" type="com.sfexpress.cdh.action.ChangePasswdAction">
<forward name="ok" path="/login.jsp" />
</action>
整个过程我分析过,也在页面上用JS做过输出,changePasswd.jsp确实是提交了changePasswdAction.do,可为什么就是没有调用Action呢?效果就像是点了返回按钮一样,直接返回到登录页面
值得注意的是:两个页面用的是同一个FormBean
需求是这样的,我所做的系统中有一个密码管理策略,必须符合两条规定:
1,用户在第一次登录时必须强制修改密码
2,密码在一个月后将失效,用户登录时也强制修改密码
本着这个需求的原则,我在后台对该需求进行了判断,一旦不符合上述两条规则,则forward到密码修改页面
代码如下所示:
if (loginResult.equals("1")) {
...
} else if (loginResult.equals("2")){
return actionMapping.findForward("modPwd"); //forward至修改密码页面
}
在程序运行过程当中,用户第一次登录或密码超过30天,自动跳转到修改密码页面,并将登录时输入的密码自动填充到原密码文本框中,因为为同一属性 passwd。至此我认为一切正常。于是输入新密码,在这个页面提交时,问题来了,居然直接返回到登录页面,程序没有调用 changePasswdAction,后台也没有错误信息,页面代码如下所示:
<html:form action="/changePasswdAction.do" method="POST">
<tr>
<td>原密码</td>
<td><html:password property="passwd"/></td>
</tr>
<tr>
<td>新密码</td>
<td><html:password property="newPasswd"/></td>
</tr>
<tr>
<td>确认新密码</td>
<td><html:password property="confirmPasswd"/></td>
</tr>
<tr>
<td></td>
<td><html:submit property="submit" value="修改"/>
<html:reset value ="重置"/></td>
</tr>
</table>
</html:form>
Struts-config.xml代码如下所示:
<action input="/login.jsp" name="userForm" path="/userAction" scope="request" type="com.sfexpress.cdh.action.UserAction">
<forward name="ok" path="/main.jsp" />
<forward name="fail" path="/login.jsp" />
<forward name="modPwd" path="/changePasswd.jsp" />
</action>
<action input="/changePasswd.jsp" name="userForm" path="/changePasswdAction" scope="request" type="com.sfexpress.cdh.action.ChangePasswdAction">
<forward name="ok" path="/login.jsp" />
</action>
整个过程我分析过,也在页面上用JS做过输出,changePasswd.jsp确实是提交了changePasswdAction.do,可为什么就是没有调用Action呢?效果就像是点了返回按钮一样,直接返回到登录页面
值得注意的是:两个页面用的是同一个FormBean
答!: 1:
在数据库里设置字段控制添加字段
是否首次登陆 首次登陆时间
然后
第一次登陆 给 是否首次登陆 赋值 ,记录 首次登陆时间
每次登录都让系统时间和登陆时间对比一次 程序里设定
当时间差为一个月(30天?)把两个字段 是否首次登陆 首次登陆时间
设置为最初是状态
是否首次登陆 首次登陆时间
然后
第一次登陆 给 是否首次登陆 赋值 ,记录 首次登陆时间
每次登录都让系统时间和登陆时间对比一次 程序里设定
当时间差为一个月(30天?)把两个字段 是否首次登陆 首次登陆时间
设置为最初是状态
答!: 2:
谢谢楼上的XD,其实思路我已经有了,我的问题是为什么按提交以后,不触发changePasswdAction~而是直接返回到登录页面,后台则什么都没做呢~~
效果就像是点了IE的后退按钮似的~
效果就像是点了IE的后退按钮似的~
相关JAVA教程:
java+ssl+数字证书的问题
数据库连接池问题!谢谢给解决一下
请教!为什么我的tomcat启动过程中停住了!请进见详情
hibernate 插入多条记录问题 报错Could not execute JDBC batch update 困惑我2天了!
关于request.setAttribute时log文件报错
利用Dom4j 如何将整个xml文件清空?
mysql+weblogic连接池的问题
菜鸟问题!
关于页面显示我有3条记录,但是页面上的表格不把具体的数据信息显示出来的问题,高手进!
jsp和javabean结合的问题
添加JavaBean成员变量读写方法的问题
求教:关于电子邮件自动发送的问题(jsp)(急!)