springboot整合项目-登录功能实现
登录端的业务层
1.产生什么异常
1.用户名对应的密码错误,密码匹配失败 PasswordNotMatchException
2.用户名没被找到 UsernameNotFoundException
3.异常的编写:
继承ServiceException基类 使用alt+ insert 快捷键重写 ServiceException的五个方法即可
2.设计业务层的接口和抽象方法
1.UserService
2.抽象方法: login(String username,String password)方法
3.将当前登录成功的用户数据以及当前用户对象的形式进行返回, 状态管理:可以将数据保存在cookie或者session中,这样可以避免重复度很高的数据多次频繁的操作数据进行获取
(用户名、用户id存放在session中,用户头像保存在cookie中)
3.抽象方法的实现
和注册一致
登录端的控制层
1.处理异常
业务层抛出的异常是什么,需要在统一处理基类中进行统一的捕获或者处理 BaseException类中进处理这个业务层产生的错误或者异常
else if (e instanceof UsernameNotFoundException){
result.setState(5001);
result.setMessage("用户数据不存在的异常");
}else if (e instanceof PasswordNotMatchException){
result.setState(5002);
result.setMessage("用户名的密码错误的异常");
}
2.涉及请求
请求路径:/users/login
请求方式:POST
请求数据:String username, String password ,HttpSession session
响应结果:JsonResult
3.处理请求 1.在UserController类中编写请求处理的方法 ###登录前端页面 1.在login.html页面中书写ajax函数
2. 访问页面
用户对话session
session对象主要存在服务器端,可以保存服务器的临时数据对象,所保存的数据可以在整个项目中都可以通过访问来获取,把session的数据看为一个共享的数据,首次登陆的时候
所获取的用户的数据,转移到session对象即可。 session.getAttrbute("key") 可以将获取session中获取数据的这种数据进行封装。封装到baseController类中
1.封装session对象数据的获取、数据的设置(当用户登录成功进行数据的设置,设置到全局的session中)
2.在父类中封装两个数据,获取uid和获取username对应的两个方法
3.需要在登录的方法中将属性封装到session中,服务器启动会自动创建一个session对象,已经是一个全局的session对象。springboot直接使用session对象
要求是 HttpSession类型的对象作为请求处理返方法的参数,会自动将全局的session对象注入到请求处理方法的session的对象上
本文来自博客园,作者:wiselee/,转载请注明原文链接:https://www.cnblogs.com/wiseleer/p/16854237.html