Java 如何为普通用户和管理员配置不同maxUploadSize的多部分解析器?
我可以用10K(10000字节)的Java 如何为普通用户和管理员配置不同maxUploadSize的多部分解析器?,java,spring,spring-mvc,multipart,resolver,Java,Spring,Spring Mvc,Multipart,Resolver,我可以用10K(10000字节)的maxUploadSize定义这样的MultipartResolver: 您可能需要创建两个多部分解析器bean,一个用于普通用户,另一个用于管理员。在应用程序中,您可以根据用户的角色选择要使用的bean。如何使用业务逻辑解决此问题?只需将maxUploadSize值设置为admin,并检查用户是否为admin以及文件大小。最简单的方法是为管理员而不是普通用户使用不同配置的bean实现。实现这一点最优雅的方法是使用一个生成会话范围bean实例的方法(我在下面添
maxUploadSize
定义这样的MultipartResolver
:
您可能需要创建两个多部分解析器bean,一个用于普通用户,另一个用于管理员。在应用程序中,您可以根据用户的角色选择要使用的bean。如何使用业务逻辑解决此问题?只需将maxUploadSize值设置为admin,并检查用户是否为admin以及文件大小。最简单的方法是为管理员而不是普通用户使用不同配置的bean实现。实现这一点最优雅的方法是使用一个生成会话范围bean实例的方法(我在下面添加了一个范围代理,以防您没有在会话范围bean中使用它;否则您可以使用这样一个更简单的注释:@Scope(WebApplicationContext.Scope\u session)
)
当然,您需要添加代码来确定用户是否是管理员,并且还需要添加对基于注释的配置扫描的支持(如果您还没有得到它;
/
是非常常见的事情).在你的应用程序中,你可以根据用户的角色选择使用哪个bean。
->既然解析器被定义为响应应用程序接收到的所有多部分请求,你该怎么做?@Tammen,也许你可以看到这个spring论坛的线程来获得答案::。您只需定义两个multiparesolver bean,然后使用Spring的DI插入适当的bean。就像上面的帖子一样。值得注意的是:如果我调用我的bean方法getmultiparesolver
,Spring会抱怨。我必须调用我的多部分解析器
。以防其他人遇到这个问题。
@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;
}
}