java使用session存登录的用户信息

创建账户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
————————————————
版权声明:本文为CSDN博主「一只想飞的鱼_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29370483/article/details/90447597

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值