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
}
}