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的对象上

posted @ 2022-11-03 13:51  wiselee/  阅读(462)  评论(0编辑  收藏  举报