后台登录界面功能介绍
项目首页地址:https://blog.csdn.net/weixin_45019350/article/details/108869025
一、登录介绍
当我们进行后台博客管理界面搭建之前,我们还需要对后台博客管理系统进行路径拦截,使所有后台操作都建立在先登录在操作的基础上,所有访问后台资源路径都要先进行校验是否已经登录过,没有登录我们就要拦截下来跳转到登录页面,进行登录操作。
二、定义拦截适配器
新建一个类继承HandlerInterceptorAdapter(拦截适配器)并实现preHandle(预处理)方法,此方法会请求之前执行,判断请求资源的session对象是否有值,有值则用户已经登录,可以继续执行,为空则用户没有登录不能做下一步操作。
三、配置拦截器
新建一个类继承WebMvcConfigurerAdapter类并实现addInterceptors方法,添加拦截器并指定所要拦截的路径。我们这里拦截所有以admin开头的路径,但排除登录路径,好进行登录操作。
WebMvcConfigurerAdapter:Spring内部的一种配置方式采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。
四、创建登录控制器
1、跳转到登录页面
当我们输入后台访问路径admin时我们会被拦截并跳转到登录页面,在登录控制类中实现该方法。
2、登录校验操作
随后我们需要输入用户名和密码并进行校验(由于是个人博客就没有添加注册功能所以,用户名和密码我们可以事先存入到数据库中)
3、解密密码
为了安全性我们的密码一般是不直接显示出来的,而是通过加密的方式存入数据库中,所以我们需要配置一个加密类(通常采用MD5加密法)。对密码进行加密和解密操作。
public class MD5Utils {
public static String code(String str){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte[]byteDigest = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < byteDigest.length; offset++) {
i = byteDigest[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
//32位加密
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
//密码加密显示
public static void main(String[] args) {
System.out.println(code("111111"));
}
}
4、业务层加密
我们做登录校验时由于我们存入数据库中的密码是加密后的,所以我们也需要对传过来的数据密码进行加密操作。
5、持久层数据查询
我们最后调用持久层查询数据库中是否存在该用户名和密码
这里我使用的是xml的方式编写sql语句(也可以使用注解的方式看个人喜好)
这里注意事项:
1.mapper.xml要与mapper包层级一致,这里从com开始。
2.启动类:添加了注解@MapperScan扫描包,并指定了mapper包可以不用在每个mapper类上加注解,该注解会自动扫描指定路径下所有的类。
3.配置文件中可加上以下配置:
#起别名,mapper.xml路径,驼峰命名规则
mybatis:
type-aliases-package: com.ldf.demo.pojo
mapper-locations: classpath:com.ldf.demo.mapper/*.xml
configuration:
map-underscore-to-camel-case: true
6、完成数据验证
有该用户名即登录成功讲数据存入session中并跳转到首页,没有该用户名即重定向会登录页面并提示用户名密码错误请重新输入。
注意:
return:重定向到的是路径,该路径会在执行方法后返回到指定页面,不是直接重定向到页面。
五、注销功能
当我们退出登录时我们可以清除session中的数据即可实现注销功能,并返回到登录页面重新登录。