创建账户model:
public class Account {
private Integer id;
/**
* 联系人名称
*/
private String userName;
/**
* 手机
*/
private String phone;
/**
* 公司名称
*/
private String company;
public Account() {
}
public Account(Integer id, String userName, String phone, String company) {
this.id = id;
this.userName = userName;
this.phone = phone;
this.company = company;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
}
创建基础控制器,里面实现session存和取的方法:
/**
* 基础控制器
*
* @author tuc
*/
public abstract class BaseController {
/**
* 当前账号常量
*/
private static final String ACCOUNT = "account";
private HttpServletRequest getRequest() {
return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
}
public Account getAccount() {
HttpSession session = getRequest().getSession();
return (Account) session.getAttribute(ACCOUNT);
}
public void setAccount(Account account) {
HttpSession session = getRequest().getSession();
if (account != null) {
session.setAttribute(ACCOUNT, account);
//session过期时间设置,以秒为单位,即在没有活动30分钟后,session将失效
session.setMaxInactiveInterval(30 * 60);
}
}
}
创建测试控制器继承基础控制器来进行测试:
/**
* 测试Controller
*
* @author tuc
*/
@RestController
public class TestController extends BaseController {
/***
* 测试登录
* 这里假设用户(userName=admin,password=123456)
*/
@PostMapping("/login")
public ResultModel login(String userName, String password) {
try {
Map<String, Object> map = new HashMap<>(1);
if ("admin".equals(userName) && "123456".equals(password)) {
//登录成功,开始缓用户信息(当前我使用假数据,真实情况是查询数据库获取)
Account account = new Account();
account.setId(1);
account.setUserName("张三");
account.setPhone("15388888888");
account.setCompany("xx投资公司");
setAccount(account);
} else {
return ResultTools.result(1003, "", map);
}
return ResultTools.result(0, "", map);
} catch (Exception e) {
return ResultTools.result(404, e.getMessage(), null);
}
}
/***
* 获取用户
*/
@GetMapping("/getUser")
public ResultModel getUser() {
try {
Map<String, Object> map = new HashMap<>(1);
Account account = getAccount();
if (account == null) {
return ResultTools.result(1002, "", map);
}
map.put("account", account);
return ResultTools.result(0, "", map);
} catch (Exception e) {
return ResultTools.result(404, e.getMessage(), null);
}
}
}
直接调用http://localhost:8080/getUser 结果如下:
代表我们没有登录过,或是session已过期。
然后我们先调用登录接口http://localhost:8080/login?userName=admin&password=123456
然后再调用http://localhost:8080/getUser 结果如下:
使用测试完成,谢谢阅读。
最后附上源码下载地址:https://download.csdn.net/download/qq_29370483/11193834