java – 如何为普通用户和管理员配置不同maxUploadSize的MultipartResolver?
发布时间:2020-05-24 12:22:47 所属栏目:Java 来源:互联网
导读:我可以使用10K(10000字节)的maxUploadSize定义这样的MultipartResolver: bean id=multipartResolver class=org.springframework.web.multipart.commons.CommonsMultipartResolver property name=maxUploadSize v
|
我可以使用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 ... />是非常常见的事情. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
