Springboot shiro (一)拦截路由,自动跳转到登录页面

使用场景:

  • 在web微服务中做登录控制,没登录时自动跳转到登录页面

  • 原理:
    使用filter对路由进行拦截过滤,然后再路由跳转,如果知道怎么搞的话,就不用往下看了,因为比较简单粗暴。

依旧是几步搞定

  • 第一步 准备微服务
    springboot中使用thymeleaf访问页面
    参照上面链接粗暴的搞完,直到可以访问到页面
  • 第二步 上依赖
		
            org.apache.shiro
            shiro-spring
            1.2.2
        

如果你第一步搞完的话里面应该已经有了下面两个依赖,如果没有,回到第一步粗暴搞完

        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
         
            org.springframework.boot
            spring-boot-starter-web
        
  • 第三步 上配置
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.LinkedHashMap;
import java.util.Map;

@Configuration
public class ShiroConfig {

   @Bean
   public SecurityManager sercurityManager(){
      return new DefaultWebSecurityManager();
   }

   @Bean
   public ShiroFilterFactoryBean filterFactoryBean(SecurityManager securityManager){
      /**
       * 准备拦截器的拦截路径
       * 需要保持拦截顺序,所以用linkedHashMap,一般将/**放在最下面
       */
      Map filterMap = new LinkedHashMap<>();
      filterMap.put("/logout", "logout");
      //authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问
      filterMap.put("/**", "authc");

      ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
      shiroFilterFactoryBean.setSecurityManager(securityManager);
      //需要登录的页面
      shiroFilterFactoryBean.setLoginUrl("/login");
      //登录成功的页面
      shiroFilterFactoryBean.setSuccessUrl("/index");
      shiroFilterFactoryBean.setUnauthorizedUrl("/error");
      shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
      return shiroFilterFactoryBean;
   }


}
  • 开始测试
    启动服务,访问 http://localhost:8001 就自动跳转到了 http://localhost:8001/login
    Springboot shiro (一)拦截路由,自动跳转到登录页面_第1张图片

你可能感兴趣的:(springboot,前端)