加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何为普通用户和管理员配置不同maxUploadSize的Multipa

发布时间:2020-12-15 00:41:21 所属栏目:Java 来源:网络整理
导读:我可以使用10K(10000字节)的maxUploadSize定义这样的MultipartResolver: bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" property name="maxUploadSize" value="10000"//bean 但是,如果管理员需
我可以使用10K(10000字节)的maxUploadSize定义这样的MultipartResolver:
<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10000"/>
</bean

但是,如果管理员需要通过超过此限制的管理界面上传一些大文件,则需要临时重新配置应用程序以允许此操作 – 然后再次重新配置以确保常规用户不超过此限制.

当然,当发生这种情况时,普通用户可能会在没有收到警告的情况下潜入大文件.

有没有办法在这两种情况下配置解析器使用不同的maxUploadSize?

解决方法

最简单的方法是为管理员而不是普通用户使用不同配置的bean实现.最优雅的方法是使用 Spring 3.0 @Configuration bean生成会话范围的bean实例(我在下面添加一个范围代理,以防你在会话范围的bean中没有使用它;否则你可以使用它一个更简单的注释,如下所示:@Scope(WebApplicationContext.SCOPE_SESSION)).
@Configuration
public class MultipartResolverBuilder {
    @Bean @Scope(value = WebApplicationContext.SCOPE_SESSION,proxyMode = ScopedProxyMode.TARGET_CLASS)
    public CommonsMultipartResolver getMultipartResolver() {
        CommonsMultipartResolver mr = new CommonsMultipartResolver();
        if (user_is_not_admin) {
            mr.setMaxUploadSize(10000);
        }
        return mr;
    }
}

当然,您需要添加代码来确定用户是否是管理员,并且您需要添加支持扫描基于注释的配置(如果您还没有获得它;< context:annotation-config /> /< context:component-scan ... />是非常常见的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读