SpringBoot个人博客项目(3)

SpringBoot个人博客项目(3),第1张

继续干!
  • 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安全框架实现登录认证
      点我传送 ------------------》SpringBoot+Shiro实现登录授权认证.

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/905652.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-15
下一篇2022-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存