电商网站用户必须登录账号才能发起购物,用户输入用户名和密码认证为唯一性,用户获取账号需要在网站中申请注册账号之后才能操作网站中的信息。
用户模块包含用户注册、用户登录、用户修改密码、用户个人中心信息查询
1用户注册界面
在这里插入图片描述
2用户登录界面
在这里插入图片描述
3用户个人中心界面
在这里插入图片描述
4用户修改密码界面
在这里插入图片描述
5用户模块开发
5.1数据库表设计
在这里插入图片描述
表名:tb_member 商城会员表
字段
字段中文名
username
用户名
password
密码
nickname
用户昵称
phone
用户电话号码
status
用户状态
caeate_time
创建时间
5.2用户注册模块开发
用户输入用户名和密码以及再次输入确认密码和手机号信息,调用用户注册接口,用户接口mybaties将用户信息插入tb_member数据库表中,从而完成用户注册功能。(ps这应该是大学老师里面天天讲的一个登陆注册讲了4年)
关键代码分析
/***
* 会员注册接口
* 商城用户接口
*/
@RestController
@RequestMapping(“api”)
public class MemberController {
@Autowired
private MerberService merberService;
/****
* 校验用户是否存在
*/
@RequestMapping(“/vilidateUser”)
public CommonResult vilidateUser(String username){
int result=merberService.vilideUser(username);
if(result==0){
return CommonResult.success(result);
}else if(result==1){
//code大于200业务失败。
return CommonResult.failed(ResultCode.USEREXIT);
}
return null;
}
/***
* 注册用户
*/
@RequestMapping(“/user/register”)
public CommonResult registerUser(TbMember member){
int result=merberService.registerUser(member);
if(result>0){
return CommonResult.success(result);
}
return CommonResult.failed();
}
5.3用户登录模块
用户输入用户名和密码,后台首先校验用户用户名是否不存在,不存在则直接提示不存在用户,如果用户存在进行对密码的一个加密,根据加密后的密码以及用户名查询数据库用户密码是否正确,如果正确则用户可以登录
关键代码分析
/***
* 会员注册接口
* 商城用户接口
*/
@RestController
@RequestMapping(“api”)
public class MemberController {
@Autowired
private MerberService merberService;
/****
* 校验用户是否存在
*/
@RequestMapping(“/vilidateUser”)
public CommonResult vilidateUser(String username){
int result=merberService.vilideUser(username);
if(result==0){
return CommonResult.success(result);
}else if(result==1){
//code大于200业务失败。
return CommonResult.failed(ResultCode.USEREXIT);
}
return null;
}
/***
* 注册用户
*/
@RequestMapping(“/user/register”)
public CommonResult registerUser(TbMember member){
int result=merberService.registerUser(member);
if(result>0){
return CommonResult.success(result);
}
return CommonResult.failed();
}
/***
* 会员登录
*/
@RequestMapping(“/meberuser/login”)
public CommonResult loginUser(TbMember member, HttpServletRequest request, HttpServletResponse response){
HttpSession session= request.getSession();
System.out.println(“seesionID”+session.getId());
TbMember tbMember=merberService.login(member);
System.out.println(session);
String uuid = UUID.randomUUID().toString();
if(tbMember==null){
return CommonResult.failed(ResultCode.LOGINFAIL);
}else{
//登录成功将用户信息放入session中2019年1021号加入
session.setAttribute(Constant.CURRENT_LOGIN_USER,tbMember);
session.setAttribute(“a”,”hello”);
//放入cokie
CookieUtil.set(response,Constant.TOKEN,uuid,Constant.EXPIRE);
return CommonResult.success(tbMember);
}
}
5.4用户个人中心模块
从session中获取用户信息然后将session中的用户信息获取出来进而返回用户个人信息页面
关键代码分析
/***
* 会员注册接口
* 商城用户接口
*/
@RestController
@RequestMapping(“api”)
public class MemberController {
@Autowired
private MerberService merberService;
/****
* 校验用户是否存在
*/
@RequestMapping(“/vilidateUser”)
public CommonResult vilidateUser(String username){
int result=merberService.vilideUser(username);
if(result==0){
return CommonResult.success(result);
}else if(result==1){
//code大于200业务失败。
return CommonResult.failed(ResultCode.USEREXIT);
}
return null;
}
/***
* 注册用户
*/
@RequestMapping(“/user/register”)
public CommonResult registerUser(TbMember member){
int result=merberService.registerUser(member);
if(result>0){
return CommonResult.success(result);
}
return CommonResult.failed();
}
/***
* 会员登录
*/
@RequestMapping(“/meberuser/login”)
public CommonResult loginUser(TbMember member, HttpServletRequest request, HttpServletResponse response){
HttpSession session= request.getSession();
System.out.println(“seesionID”+session.getId());
TbMember tbMember=merberService.login(member);
System.out.println(session);
String uuid = UUID.randomUUID().toString();
if(tbMember==null){
return CommonResult.failed(ResultCode.LOGINFAIL);
}else{
//登录成功将用户信息放入session中2019年1021号加入
session.setAttribute(Constant.CURRENT_LOGIN_USER,tbMember);
session.setAttribute(“a”,”hello”);
//放入cokie
CookieUtil.set(response,Constant.TOKEN,uuid,Constant.EXPIRE);
return CommonResult.success(tbMember);
}
}
@RequestMapping(“/meberuser/logout”)
public CommonResult loginUser(HttpSession session){
//登录成功将用户信息放入session中2019年1021号加入
session.removeAttribute(Constant.CURRENT_LOGIN_USER);
return CommonResult.success(1);
}
@RequestMapping(“/meberuser/getinfo”)
public CommonResult getinfo( HttpSession session){
TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
if(tbMember==null){
//未登录返回0 啊
return CommonResult.failed(ResultCode.NOLOGIN);
}
return CommonResult.success(tbMember);
}
/***
* 获取用户信息
* @param session
* @return
*/
@RequestMapping(value = “/meberuser/getinformation”)
public CommonResult get_information(HttpSession session){
TbMember currentUser = (TbMember)session.getAttribute(Constant.CURRENT_LOGIN_USER);
if(currentUser == null){
return CommonResult.failed(ResultCode.UNAUTHORIZED);
}
return CommonResult.success(merberService.getInformation(currentUser.getId()));
}
5.5修改密码
用户输入原密码和新密码,后台修改密码接口将用户新密码更新到登录用户的信息表中从而完成用户修改密码功能
关键代码分析
/***
* 会员注册接口
* 商城用户接口
*/
@RestController
@RequestMapping(“api”)
public class MemberController {
@Autowired
private MerberService merberService;
/****
* 校验用户是否存在
*/
@RequestMapping(“/vilidateUser”)
public CommonResult vilidateUser(String username){
int result=merberService.vilideUser(username);
if(result==0){
return CommonResult.success(result);
}else if(result==1){
//code大于200业务失败。
return CommonResult.failed(ResultCode.USEREXIT);
}
return null;
}
/***
* 注册用户
*/
@RequestMapping(“/user/register”)
public CommonResult registerUser(TbMember member){
int result=merberService.registerUser(member);
if(result>0){
return CommonResult.success(result);
}
return CommonResult.failed();
}
/***
* 会员登录
*/
@RequestMapping(“/meberuser/login”)
public CommonResult loginUser(TbMember member, HttpServletRequest request, HttpServletResponse response){
HttpSession session= request.getSession();
System.out.println(“seesionID”+session.getId());
TbMember tbMember=merberService.login(member);
System.out.println(session);
String uuid = UUID.randomUUID().toString();
if(tbMember==null){
return CommonResult.failed(ResultCode.LOGINFAIL);
}else{
//登录成功将用户信息放入session中2019年1021号加入
session.setAttribute(Constant.CURRENT_LOGIN_USER,tbMember);
session.setAttribute(“a”,”hello”);
//放入cokie
CookieUtil.set(response,Constant.TOKEN,uuid,Constant.EXPIRE);
return CommonResult.success(tbMember);
}
}
@RequestMapping(“/meberuser/logout”)
public CommonResult loginUser(HttpSession session){
//登录成功将用户信息放入session中2019年1021号加入
session.removeAttribute(Constant.CURRENT_LOGIN_USER);
return CommonResult.success(1);
}
@RequestMapping(“/meberuser/getinfo”)
public CommonResult getinfo( HttpSession session){
TbMember tbMember= (TbMember) session.getAttribute(Constant.CURRENT_LOGIN_USER);
if(tbMember==null){
//未登录返回0 啊
return CommonResult.failed(ResultCode.NOLOGIN);
}
return CommonResult.success(tbMember);
}
/***
* 获取用户信息
* @param session
* @return
*/
@RequestMapping(value = “/meberuser/getinformation”)
public CommonResult get_information(HttpSession session){
TbMember currentUser = (TbMember)session.getAttribute(Constant.CURRENT_LOGIN_USER);
if(currentUser == null){
return CommonResult.failed(ResultCode.UNAUTHORIZED);
}
return CommonResult.success(merberService.getInformation(currentUser.getId()));
}
/***
*
* @param session
* @param passwordOld
* @param passwordNew
* @return
*/
@RequestMapping(value = “/meberuser/updatepassword”)
public CommonResult resetPassword(HttpSession session,String passwordOld,String passwordNew){
TbMember user = (TbMember)session.getAttribute(Constant.CURRENT_LOGIN_USER);
if(user == null){
return CommonResult.failed(ResultCode.UNAUTHORIZED);
}
return CommonResult.success(merberService.resetPassword(passwordOld,passwordNew,user));
}
}
6总结
用户模块,单纯的用户登录和注册相对来说比较简单,本系统由于使用前后端分离的情况,所以还是使用了session来存储用户的信息,利用了后台解决ajax跨域问题,用户信息存储在session中,方便判断用户是否属于登录状态。
8个人说明
经验是由一点一点积累的,思维也是由一天一天训练出来的。
持续更新分享此项目电商在线演示地址为:演示地址