SpringBoot-拦截器实现登录权限设置

SpringBoot-拦截器实现登录权限设置

进行项目练习时,往往有的页面是需要我们登录后才可访问,而项目初期所有页面是都可以访问的,这并不符合我们的要求,因此我们需要拦截器来进行相关权限的判定,符合要求时放行,不符合时返回首页并提示,实现步骤如下:

1. 书写登陆拦截类,实现HandlerInterceptor接口,重写preHandle方法

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        String username = (String) session.getAttribute("loginUser");
        if (username == null){
            request.setAttribute("msg","未拥有权限,请先登录");
            request.getRequestDispatcher("/index").forward(request,response);
            return false;
        }else{
            return true;
        }
    }
}

2. 在使用@Configuration注解的配置类中,重写addInterceptors方法

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {


    @Bean
    public LocaleResolver localeResolver(){
        return new MySolver();
    }

    @Override
    // 拦截器
    public void addInterceptors(InterceptorRegistry registry) {

       // 添加拦截器
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**") //作用:拦截所有请求,
                .excludePathPatterns("/user/login","/css/**","/js/**","/img/**","/index","/"); // 作用:拦截时放行这些请求,“/user/login”登录请求,“"/css/**","/js/**","/img/**"” 静态资源请求,“"/index","/"”去往首页请求
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
      // 添加视图跳转路径
        registry.addViewController("/index").setViewName("index");
    }
}

3. controller层编写,仅仅只是用户名验证,登陆成功时,存放session,登陆失败,显示警告用语,返回首页

@Controller
public class LoginController {
    
   @GetMapping("/index")
    public String toIndex(){
        return "index";
    }
    @GetMapping("/dash")
    public String toDash(){
        return "dashboard";
    }
    @RequestMapping("/user/login")
    public String userLogin(String username,HttpSession session, Model model){
        if ("admin".equals(username)){
            session.setAttribute("loginUser",username);
            return "redirect:/dashboard.html";
        }else {
            model.addAttribute("msg","用户名有误");
            return "/index";
        }
    }
}

4.前端测试

  • 未登录访问http://localhost:8080/dash
    在这里插入图片描述

  • 用户名错误
    在这里插入图片描述

  • 登陆成功
    在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值