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

前端之家收集整理的这篇文章主要介绍了java – 如何为普通用户和管理员配置不同maxUploadSize的MultipartResolver?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以使用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 ... />是非常常见的事情.

猜你在找的Java相关文章