网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

怎么在SpringBoot中实现Shiro授权

怎么在SpringBoot中实现Shiro授权?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

十载的兰山网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整兰山建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“兰山网站设计”,“兰山网站推广”以来,每个客户项目都认真落实执行。

使用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 filterMap= new LinkedHashMap();
    
    
    //设置拦截后跳转的请求路径
    shiroFilterFactoryBean.setLoginUrl("/user/badRequest");
    //设置未授权提示的页面
    shiroFilterFactoryBean.setUnauthorizedUrl("/user/badRequest");
    shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
    return shiroFilterFactoryBean;
  }

再使用 filterMap 去放对应的拦截即可,例如 filterMap.put("/**", "anon")

上面是认证的,如果需要授权的,相应的多给一个任意的授权字符串如 filterMap.put("/user/add", "perms[user:add]")

授权逻辑编写的位置

/**
   * 执行授权逻辑
   */
  @Override
  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
    System.out.println("开始执行Shiro的授权方法...");
    
    //给资源进行授权
    SimpleAuthorizationInfo info= new SimpleAuthorizationInfo();
    
    //添加资源的授权字符串
    info.addStringPermission("user:add");
    
    return null;
  }

授权字符串和之前的字符串对应

补充

/**
   * 执行认证逻辑
   */
  @Override
  protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {
    System.out.println("开始执行Shiro的认证方法...");    
    //编写Shiro判断逻辑,判断用户名和密码
    //判断用户名是否存在
    UsernamePasswordToken token=(UsernamePasswordToken)arg0;
    User user = userMapper.findByUsername(token.getUsername());
    if(user==null)
      return null;
    //判断密码是否正确,参数一为认证的实体
    return new SimpleAuthenticationInfo(user,user.getPassword(),"");
  }

在执行认证时的SimpleAuthenticationInfo第一个传参可以用来获取当前用户

/**
   * 执行授权逻辑
   */
  @Override
  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
    System.out.println("开始执行Shiro的授权方法...");
    
    //给资源进行授权
    SimpleAuthorizationInfo info= new SimpleAuthorizationInfo();
    
    //添加资源的授权字符串
    info.addStringPermission("user:register");
    
    //获取当前的登录用户
    User user=(User)SecurityUtils.getSubject().getPrincipal();        
    return null;
  }

看完上述内容,你们掌握怎么在SpringBoot中实现Shiro授权的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


本文名称:怎么在SpringBoot中实现Shiro授权
本文来源:http://bjjierui.cn/article/ispshs.html

其他资讯