SpringBoot个人博客项目(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 buffer = new StringBuffer(""); for(int offeset = 0;offeset < byteDigest.length ; offeset++){ i = byteDigest[offeset]; if(i < 0){ i += 256; } if(i < 16){ buffer.append("0"); } buffer.append(Integer.toHexString(i)); } //32位加密 return buffer.toString(); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); return null; } } public static void main(String[] args) { System.out.println(code("111111")); } } 测试:先将数据库中管理员密码改成111111对应的MD5加密后的密文 96e79218965eb72c92a549dd5a330112 在请求登录控制器 /login 时,将密码进行MD5加密后再去数据库中查询 Map<String,String> userMap = new LinkedHashMap<String,String>(); userMap.put("username",username); userMap.put("password", MD5Utils.code(password)); User user = userService.checkUser(userMap); 使用密码111111 , 成功登录! 登录拦截器 李仁密老师视频中简单的使用了普通的拦截器,对admin下所有资源进行拦截,只有当user的session的存在时,才可放行访问。我们这里使用shiro安全框架进行改写,但首先李仁密老师的拦截器也简单介绍一下如何使用。 普通拦截器 编写 LoginInterceptor 自定义登录拦截器 public class LoginInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(request.getSession().getAttribute("user") == null){ response.sendRedirect("/admin"); return false; } return true; } } 在 WebMVCConfig 中对该拦截器进行配置 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()) .addPathPatterns("/admin/**") .excludePathPatterns("/admin") .excludePathPatterns("/admin/login"); } 编写 BlogController 跳转路由 @RequestMapping("/admin") public class BlogController { @GetMapping("/blogs") public String list(){ return "admin/blogs"; } } 测试: 当未登录时直接访问/admin/blogs,会被拦截器所拦截重定向会/admin登录页,当登录后再访问,此时浏览器中存在user的session,因此可以直接访问。 使用shiro安全框架实现登录认证 .
经验分享 程序员 微信小程序 职场和发展