gpt4 book ai didi

java - Spring过滤器对请求参数进行授权

转载 作者:行者123 更新时间:2023-11-30 06:01:18 26 4
gpt4 key购买 nike

我有一些 Controller ,其中一些用请求映射注释的方法需要 codes (字符串列表)的请求参数我想授权这些代码列表来检查当前用户是否有权访问列表中的所有代码并过滤这些代码。我想要的是为那些我无法将其应用于 URL 映射的 Controller 创建一个通用过滤器。有没有办法创建过滤器并将注释仅应用于某些方法(请求映射)?

另一个问题是可以在 session 中保留 600 个代码的列表还是数据库调用更合适?我期望代码的这些授权调用频繁(用户可以查看(更频繁)、更新(不太频繁)与代码关联的数据)

更新:

例如我有两种方法:

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

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

现在,如果我想验证代码,我必须在两种方法中放入验证逻辑,我想要的是编写一个过滤器/拦截器来检查用户是否有权查看列表中的所有代码,我可以将用户 url 映射到拦截我询问的请求,是否有一种通用方法可以使用 on 方法来验证代码,而无需添加 url 映射。

最佳答案

创建 Spring 过滤器

此线程可能有帮助:

注册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
}
}
<小时/>

存储函数调用返回的值

您可以使用 Caching 轻松保留代码列表(无需将其存储在 session 中) .

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

关于java - Spring过滤器对请求参数进行授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52247815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com