Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为普通用户和管理员配置不同maxUploadSize的多部分解析器?_Java_Spring_Spring Mvc_Multipart_Resolver - Fatal编程技术网

Java 如何为普通用户和管理员配置不同maxUploadSize的多部分解析器?

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实例的方法(我在下面添

我可以用10K(10000字节)的
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;
    }
}