【springboot shiro】(5)Spring Boot与Shiro整合实现用户授权

航仔 4月前 ⋅ 340 阅读

1.1. 使用Shiro内置过滤器拦截资源 `` /**

  • 创建ShiroFilterFactoryBean

*/ `` @Bean

public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManager securityManager){

ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();

//设置安全管理器

shiroFilterFactoryBean.setSecurityManager(securityManager);

//添加Shiro内置过滤器

/**

  • Shiro内置过滤器,可以实现权限相关的拦截器

  • 常用的过滤器:

  •   anon: 无需认证(登录)可以访问
    
  •   authc: 必须认证才可以访问
    
  •   user: 如果使用rememberMe的功能可以直接访问
    
  •   perms: 该资源必须得到资源权限才可以访问
    
  •   role: 该资源必须得到角色权限才可以访问
    

*/

Map<String,String> filterMap = new LinkedHashMap<String,String>();

/*filterMap.put("/add", "authc");

filterMap.put("/update", "authc");*/

filterMap.put("/testThymeleaf", "anon");

//放行login.html页面

filterMap.put("/login", "anon");

//授权过滤器

//注意:当前授权拦截后,shiro会自动跳转到未授权页面

filterMap.put("/add", "perms[user:add]");

filterMap.put("/*", "authc");

//修改调整的登录页面

shiroFilterFactoryBean.setLoginUrl("/toLogin");

//设置未授权提示页面

shiroFilterFactoryBean.setUnauthorizedUrl("/noAuth");

shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);

return shiroFilterFactoryBean;

}

1.2. 完成Shiro的资源授权 UserRealm:

/**

  • 执行授权逻辑

*/ `` @Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {

System.out.println("执行授权逻辑");

//给资源进行授权

SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();

//添加资源的授权字符串

info.addStringPermission("user:add");

return info;

}


全部评论: 0

    我有话说: