6、获取登录后用户信息接口开发,忘记密码,提示问题与答案,重置密码功能开发
2018-09-10 20:57
246 查看
版权声明:转载请注明出处~ https://blog.csdn.net/czjlghndcy/article/details/82596006
接口测试:
1、登录后获取用户信息接口开发
controller层:
//登录后获取用户信息 @RequestMapping(value = "get_user_info.do",method = RequestMethod.POST) @ResponseBody public ServerResponse<User> getUserInfo(HttpSession session){ User user= (User) session.getAttribute(Const.CURRENT_USER); if(user!=null){ return ServerResponse.createBySuccess(user); } return ServerResponse.createByErrorMessage("用户为未登录,无法获取登录信息"); }
通过
session获取当前用户
由于只直接返
user对象,所以没有对
server层进行操作
接口测试:
2、忘记密码接口开发
controller层:
//忘记密码 @RequestMapping(value = "forget_get_question.do",method = RequestMethod.POST) @ResponseBody public ServerResponse<String> forgetGetQuestion(String username){ return iUserService.selectQuestion(username); }
server层:
//查询问题 ServerResponse selectQuestion(String username);
serverImpl层:
//忘记密码 public ServerResponse selectQuestion(String username){ ServerResponse validResponse=this.checkValid(username,Const.USERNAME); if(validResponse.isSuccess()){ //用户不存在 return ServerResponse.createByErrorMessage("用户不存在"); } String question =userMapper.selectQuestionByUsername(username); if(StringUtils.isNotBlank(question)){ return ServerResponse.createBySuccess(question); } return ServerResponse.createByErrorMessage("找回密码门的问题是空"); }
先在
UserMapper中将接口写好:
String selectQuestionByUsername(String username);
对应
mapper.xmlSQL语句:
<!--找回密码--> <select id="selectQuestionByUsername" resultType="string" parameterType="string"> select question from mmall_user where username=#{username} </select>
接口测试
3、提示问题和答案(是在用户登录的前提下)接口开发
controller层:
//提交问题答案 @RequestMapping(value = "forget_check_answer.do",method = RequestMethod.POST) @ResponseBody public ServerResponse<String> forgetCheckAnswer(String username,String question,String answer){ return iUserService.CheckAnswer(username,question,answer); }
Server:
//校验问题的回答 ServerResponse<String> CheckAnswer(String username,String question,String answer);
serverImpl:
//校验回答是否正确 public ServerResponse<String> CheckAnswer(String username,String question,String answer){ int resultCount=userMapper.checkAnwser(username,question,answer); if(resultCount>0){ //说明问题及问题答案是这个用户的,并且回答正确 String forgetToken= UUID.randomUUID().toString(); TokenCache.setKey(TokenCache.TOKEN_PREFIX+username,forgetToken); return ServerResponse.createBySuccess(forgetToken); } //说明问题是这个用户,但是回答错误 return ServerResponse.createByErrorMessage("回答错误"); }
校验答案
UserMapper:
int checkAnwser(@Param("username") String username, @Param("question") String question, @Param("answer") String answer);
对应功能的
UserMapper.xml:
<!--提交问题答案--> <select id="checkAnwser" resultType="int" parameterType="map"> select count(1) from mmall_user where username=#{username} and question=#{question} and answer=#{answer} </select>
接口测试:
4、重置密码接口开发:
controller:
//登录状态的重置密码 @RequestMapping(value = "rest_password.do",method = RequestMethod.POST) @ResponseBody public ServerResponse<String> restPassword(HttpSession session, String passwordOld,String passwordNew){ User user= (User) session.getAttribute(Const.CURRENT_USER); if(user==null){ return ServerResponse.createByErrorMessage("用户未登录"); } //return ServerResponse.createByErrorMessage("用户已登陆"); return iUserService.resetPassword(passwordOld,passwordNew,user); }
server:
//登录状态下重置密码 ServerResponse<String> resetPassword(String passwordOld,String passwordNew,User user);
serverImpl:
//登录状态下的密码重置 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.createByErrorMessage("旧密码错误,修改失败"); } user.setPassword(MD5Util.MD5EncodeUtf8(passwordNew)); int updateCount = userMapper.updateByPrimaryKeySelective(user); if (updateCount > 0) { return ServerResponse.createBySuccessMessage("修改成功"); } return ServerResponse.createByErrorMessage("密码更新失败"); }
对应
UserMapper:
int updateByPrimaryKeySelective(User record);
调用的是逆向工程生产的方法,故而不用自己写xml中的SQL
接口测试:
相关文章推荐
- 9、获取用户的详细信息接口,如果用户没有登录,我们提示用户登录
- 微信授权登录并获取用户信息接口开发
- 创建并部署一个Servlet,要求在实现用户登录功能,当用户名和密码正确时跳转到欢迎页面,否则提示出错信息
- 微信授权登录并获取用户信息接口开发
- 微信授权登录并获取用户信息接口开发
- wordpress用户账户信息更新、重置密码或账户被删除时发送提示邮件
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众平台开发 无高级接口账号获取用户基本信息(转)
- 获取第三方登录(相关信息 新浪微博&微信&QQ)&&登录和分享接口功能
- 集成微信第三方登录功能获取微信用户信息
- Android 微信登录昵称乱码问题,及获取微信用户信息
- 金蝶EAS登录获取用户相关信息失败、EAS默认用户名、密码
- C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)
- Apache James开发中的用户信息数据库存储和密码问题(转)
- 微信开发笔记——微信网页登录授权,获取用户信息
- 解决忘记用户登录密码的问题
- 微信公众平台开发 无高级接口账号获取用户基本信息
- Linux下postgresql忘记密码,以其他用户登录,phpmyadmin默认不允许登录的问题解决