up:: SpringBoot电商项目用户模块普通用户登录接口开发
说明:
(1) 本篇博客的点:
● if的一种快速的方法:
● 凡是需要【登录状态】下才能进行的操作,我们需要先去session中,尝试获取用户信息,如果获取到了,才能进行后续的操作;
● 本篇博客在注销的时候,采用的是【使用removeAttribute(),移除属性】的方式;而没有采用【调用invalidate()方法,直接废掉这个session】的方式;
一:更新个性签名接口;
1.UserController中,创建更新签名的方法:updateUser()方法;
说明:
(1) 方法的url,请求方式,参数,返回值类型,需要符合接口的要求;
(2) 方法说明:因为【更新签名】需要是登录的状态,所以这儿我们注入session对象,先获取当前登录用户的user信息;
(3) 方法说明:
(4) Service层的更新个性签名的方法:updataInformation()方法,在下面介绍;
2.在UserServiceImpl类中,编写更新个性签名的方法:updataInformation()方法;并在UserService接口中,反向生成该方法的定义;
(1)在UserServiceImpl类中,编写更新个性签名的方法:updataInformation()方法;
(2)在UserService接口中,反向生成该方法的定义;
说明:
(1) 方法说明;
(2) 至于,Mapper中的updateByPrimaryKeySelective()方法,我们在下面介绍;
3.Mapper中updateByPrimaryKeySelective()方法说明;
为什么这儿我们要使用updateByPrimaryKeySelective()方法,是因为:
很容易发现,这和【SpringBoot电商项目用户模块注册接口开发】中用到的insertSelective(),套路是一样的;
插:测试【普通用户登录接口】和【更新个性签名接口】;
启动项目;
(1)测试【普通用户登录接口】;
(2)测试【更新个性签名接口】;
那么如果没有登录的时候,去尝试【更新个性签名接口】;
二:退出登录接口;
退出登录:就是把Session中的用户信息给清除掉;
1.在UserController中,创建退出登录的方法:logout()方法:
说明:
(1) 自然,方法的url、请求范式、参数、返回值要符合接口的要求;
(2) 方法说明;
(3)对session的一点说明:
● 对于session的有关内容,如有需要可以参考下以前的博客;尤其是【用户会话Session对象】;
● 但是,在【OA系统实现Header显示和注销功能】中,我们注销时,采用的是【调用invalidate()方法,直接废掉这个session 】 ,而不是本篇博客使用的【使用removeAttribute(),移除属性】的方式; 关于这二者的区别,可以参考下【附加:关于Session对象的几点说明: invalidate() 方法;request.getSession(true/false/null)的区别;】;
● 目前暂时以为:在注销的时候,采用本篇博客中用到的【使用removeAttribute(),移除属性】地方方式吧;(似乎,这种方式的成本更低?)
三:管理员登录接口;
1.在UserController中,创建管理员登录方法:adminLogin()方法;
说明:
(1)方法的url,请求方式,参数,返回值类型,需要符合接口的要求;
(2) 【管理员的登录】的方法和【普通用户登录】的方法,很类似;只是,【管理员登录】多了一步校验是否是管理员的操作;
(3) 声明:普通用户和管理员用户情况说明:
● 我们在注册用户的时候,该用户默认是普通用户;
● 只有数据库管理员,才有权限修改用户的角色;
(4) 为了校验用户是否是管理员,我们在Service中创建了一个校验方法:checkAdminRole()方法;
(5) 判断,如果是管理员用户,就正常进行登录操作;;;否则,就返回错误提示;
插:全部用户模块的五个接口:【注册接口】、【普通用户登录接口】、【更新个性签名接口】【退出登录接口】和【管理员用户登录接口】;
启动项目;下面的演示,顺着看下来就行;
然后,去注册用户;
然后,我们登陆【test1】这个用户;
然后,再尝试更新用户个性签名,发现是OK的;
然后,测试下退出登录接口;
那么,此时再尝试更新个性签名,发现不OK了,因为刚才退出了嘛;
然后,再去测试,管理员登录接口;
然后,我们在数据库中,将test1的role改为2:
此时,再再去测试,管理员登录接口;