Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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

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 请求参数上的Spring筛选器授权_Java_Spring - Fatal编程技术网

Java 请求参数上的Spring筛选器授权

Java 请求参数上的Spring筛选器授权,java,spring,Java,Spring,我有一些控制器,其中一些带有请求映射注释的方法期望请求参数为code(字符串列表) 我想授权这些代码列表,以检查当前用户是否有权访问列表中的所有代码,并对这些代码进行筛选。我想要的是为那些我无法将其应用于URL映射的控制器创建一个通用过滤器。有没有一种方法可以创建一个过滤器并将注释仅应用于某些方法(请求映射) 另一个问题是,在会话中保留600个代码列表可以吗,还是db调用更合适?我希望这些代码授权调用能够频繁进行(用户可以查看(更频繁)、更新(不频繁)与代码相关的数据) 更新: 例如,我有两种方

我有一些控制器,其中一些带有请求映射注释的方法期望请求参数为
code
(字符串列表) 我想授权这些代码列表,以检查当前用户是否有权访问列表中的所有代码,并对这些代码进行筛选。我想要的是为那些我无法将其应用于URL映射的控制器创建一个通用过滤器。有没有一种方法可以创建一个过滤器并将注释仅应用于某些方法(请求映射)

另一个问题是,在会话中保留600个代码列表可以吗,还是db调用更合适?我希望这些代码授权调用能够频繁进行(用户可以查看(更频繁)、更新(不频繁)与代码相关的数据)

更新:

例如,我有两种方法:

@RequestMapping(value="/getInfo")
public void viewInfo(@RequestParam("codes") List<String> codes)

@RequestMapping(value="/getDetailInfo")
public void getDetailInfo(@RequestParam("codes") List<String> codes)
@RequestMapping(value=“/getInfo”)
公共无效视图信息(@RequestParam(“代码”)列表代码)
@请求映射(value=“/getDetailInfo”)
public void getDetailInfo(@RequestParam(“代码”)列表代码)
现在,如果我想验证代码,我必须在这两种方法中都加入验证逻辑。我想写一个过滤器/拦截器,检查用户是否有权查看列表中的所有代码。我可以使用用户url映射来截获我要问的请求。有没有一种通用的方法,我可以在方法上使用,在不添加url的情况下验证代码映射。

创建弹簧过滤器 此线程可能有助于:

将注册到给定路径模式的示例(上面链接中的完整示例):


存储函数调用返回的值 您可以使用轻松地保留代码列表(无需将其存储在会话中)


这样,检索代码的函数的第一次调用将命中数据库并保存在缓存中。后续调用不会一直到数据库,而是使用存储在缓存中的值,只要它是活动的。

同意第二个答案,但对于筛选器,我知道如何创建筛选器,但不知道如何将其添加到某些请求映射方法中?Hi@Haider。我更新了我的答案。在我为第一部分发布的链接中,有一些示例介绍了如何将过滤器(更准确地说,HandlerInterceptor)限制为路径模式。我抄了答案中的一个例子。我希望有帮助!
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    SessionManager getSessionManager() {
         return new SessionManager();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getSessionManager())
        .addPathPatterns("/**")
        .excludePathPatterns("/resources/**", "/login");
     // assuming you put your serve your static files with /resources/ mapping
     // and the pre login page is served with /login mapping
    }
}