security系统未定义资源认证处理

    自定义的认证过程中,对系统未定义的资源路径,认证过程是拿不到此资源所需权限标示的。

        1.可以采用再action中注解:(系统已经配置了统一的认证过程,没必要再加注解)

@PreAuthorize("hasRole('ROLE_SUPER')")

       2.自定义认证过程对未定义资源做特殊处理

           系统未定义资源流程测试:

          url没有添加到系统资源权限管理中当访问到来时,

          resource.secImpl.MySecurityMetadataSource.getAttributes() 判断认证权限为空,

          没有判断依据,直接放行,然后经springMVC解析,进入controller中

          测试结论:

                 倘若系统某个操作对应资源权限没有加入到资源权限表中,访问此路径是可以通过自定义认证的;

                 只有加入到权限资源中的路径,有了对应权限的判断依据,才可以进行判断并阻止访问。

      处理 a.对于一些不重要的请求(只获取数据,如下拉),可以默认放行

                <!-- 一些没必要加入权限资源的接口,给予放行-->

                <http pattern="/*/letGo/*" security="none"/>

               b.处于拦截范围且不在权限资源中的路径考虑不给予通行

                   可以在判断url对应的权限configAttributes == null时

                  return它之前就标记为未定义资源,并从resourceMap获取一个定义好的未加入url的权限,

                  此权限每个用户都不具有,

                  然后进入decide()方法,此先判断是不是未定义资源并做处理


// 数据库手动加上一个资源权限内容,resUrl为‘undefine’
//url匹配过程修改:

if(configAttributes == null){

configAttributes = resourceMap.get("undefine");

}

114744_MbdJ_2471663.png

            后续判断中就会判断为不具有此权限而抛出无权限异常。阻止访问!

转载于:https://my.oschina.net/u/2471663/blog/810727

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值