在userService这个接口里面定义我们的userRegister方法,表示的是我们的用户的注册的相关的逻辑;
我一般是选择这个使用数量最多的这个版本:
然后就是把这个里面的代码cv到pom.xml文件里面的依赖包下面,如下图所示
接下来就是我们用户注册的一系列的要求的实现,其中就会使用到上面引入的这个common这个包里面的方法:
这个StringUtils就是上面的引入的依赖包的一个方法,如果你不引入上面的依赖,这个方法就是无法使用的,他通过调用里面的isAnyBlank想要达到的目的就是判断这几个输入的参数是不是空的,如果这个用户名,密码和校验密码有一个是空的,这个时候返回-1,证明这个是不符合要求的;
下面的是要求账户的长度>=4,而且我们的密码盒校验密码的长度都不可以小于8(这些都是需要集合具体的需求进行设计的,并不是笃定不变的)
账号里面不允许出现特殊的字符,这个validPattern里面的就是特殊字符,我们的账号里面不可以包含这些特殊的字符;其次就是密码和二次校验的密码必须完全一样,否则不符合要求;
每一个用户的账号是独一无二的,因此这个需要我们检查这个用户的账号在之前的用户里面是不是使用过了,如果是重复的,就是不符合要求,这个就需要返回-1;
密码的加盐加密就是让加密之后的密码更加复杂,因为我们的密码不可以是明文的,必须要进行相关的加密;
对于每一个用户的信息,建立用户实体,存储用户的信息,result表示这个用户的信息是不是存储成功;
我们找一些特殊的情况,看看这个接口的功能是不是正常的,如果是正常的,这些特殊的情况的返回值都是-1,我们使用assertequals方法和这个-1进行比较,正常是这个断言是没问题的,因为result就是等于-1;
下面的这个就是我们定义的接口:我们的这个接口的返回值就是这个对象user里面的相关的信息,需要用户输入的就是用户的账号和密码,我们根据这个用户是不是存在返回这个对应的信息;
其实下面的这个是上面的接口的实现,这个里面的很多方法在我们的注册逻辑里面都是使用过的,例如这个账号的名字和密码不可以是空的,长度的限制要求,不可以含有特殊的字符,对于密码进行加盐处理,这些在我们的注册逻辑里面都是使用过的,无非是登录逻辑里面不需要进行两次密码输入的校验之类的操作,这个还是要根据实习的情况来修改的;
往请求的session里面设置值,从这个session里面读取值,因此我们需要在这个登录的方法里面添加一个参数,这个时候接口和实现类都是需要修改的;
我们为了记录用户的登录态,这个时候需要在方法里面添加下面的这个参数;
之前我也是经常听说“脱敏”这个词语,但是今天是第一次体会到他是如何使用的
脱敏:实际上就是保护我们的用户的敏感信息,比如说用户登录,结果你返回信息的时候把用户的密码暴露出去了,这个显然就不是很好,脱敏处理就是处理需要返回的内容,把不需要返回的内容屏蔽掉;
下面我特意没有删除,就是把这个密码注释掉,这样就可以保护这个密码隐私,不被看到,脱敏里面的敏指的就是相关的敏感数据;
里面的USER_LOGIN_STATE是一个键,这个setattribute是设置键值对的内容,我们的这一行代码相当于往这个键值对里面填入内容,这个USER_LOGIN_STATE就是键,也就是我们熟知的key,然后这个值就是我们的用户脱敏之后的这个user对象的相关属性值;
我们的key是在全局进行定义的,这个SALT是我们的盐值,就是混淆数据的,这个在注册和登录里面都用到了,所以我们把这个设置成为静态全局变量进行使用