• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

从零到企业级SSM电商项目实战教程(二十一)登录状态下重置密码功能开发

项目实战 Geekerstar 10个月前 (06-22) 380次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

UserController.java

/*
 * @Description: 登录状态的重置密码
 *
 * @auther: Geekerstar(jikewenku.com)
 * @date: 2018/6/22 15:40
 * @param: 
 * @return: 
 */
@RequestMapping(value = "reset_password.do",method = RequestMethod.GET)
@ResponseBody
public ServerResponse<String> resetPassword(HttpSession session,String passwordOld,String passwordNew){
    User user = (User)session.getAttribute(Const.CURRENT_USER);
    if(user == null){
        return ServerResponse.createByErrorMessgae("用户未登录");
    }
    return iUserService.resetPassword(passwordOld,passwordNew,user);
}

IUserService.java

ServerResponse<String> resetPassword(String passwordOld,String passwordNew,User user);

UserServiceImpl.java

public ServerResponse<String> resetPassword(String passwordOld,String passwordNew,User user){
    //防止横向越权,要检验一下这个用户的旧密码,一定要指定是这个用户,因我们会查询一个count(1),如果不指定id,那么结构就是true那count>0;
    int resultCount = userMapper.checkPassword(MD5Util.MD5EncodeUtf8(passwordOld),user.getId());
    if(resultCount == 0){
        return ServerResponse.createByErrorMessgae("旧密码错误");
    }

    user.setPassword(MD5Util.MD5EncodeUtf8(passwordNew));
    int updateCount = userMapper.updateByPrimaryKeySelective(user);
    if(updateCount > 0){
        return ServerResponse.createBySuccessMessage("密码更新成功");
    }
    return ServerResponse.createByErrorMessgae("密码更新失败");
}

UserMapper.java

int checkPassword(@Param(value = "password") String password,@Param("userId") Integer userId);

UserMapper.xml

<select id="checkPassword" resultType="int" parameterType="map">
    SELECT
    COUNT (1)
    FROM mmall_user
    WHERE password = #{password}
    and id = #{userId}
</select>

喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00