Spring security AntMatcher 不工作

2023-12-14

这是我配置 spring security 的方式,在控制器中我获得 ROLE_ANONYMOUS 作为权限。看起来安全性并没有拦截请求并检查 JWT。 如何配置antmatcher..?

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter
{

   @Override
   public void configure(HttpSecurity http) throws Exception
   {
      http.authorizeRequests()
            .antMatchers("/actuator/**", "/api-docs/**").permitAll()
            .antMatchers("/notes/**").hasAnyAuthority("USER").anyRequest().authenticated();
   }

}

下面是我的控制器代码

@RestController
@RequestMapping("/notes")
public class NoteController
{
   @Autowired
   private IUserService userService;

   @Autowired
   private INoteService noteService;

   static MessageSourceAccessor messageAccesser =  ApplicationConfiguration.getMessageAccessor();

   private final Logger logger = LoggerFactory.getLogger(NoteController.class);

   @RequestMapping(value = "/addnote", method = RequestMethod.POST)
   public ResponseEntity<Response> addNote(@RequestBody NoteDto note, HttpSession session)
   {
      Authentication ath = SecurityContextHolder.getContext().getAuthentication();
      int userId = 5;
      logger.debug("Adding note :-", note);
      Response response = new Response();
      try {
         User user = userService.getUserById(userId);
         if (user == null) {
            response.setStatus(111);
            response.setResponseMessage(ApplicationConfiguration.getMessageAccessor().getMessage("111"));
            return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
         }
         noteService.saveNote(note, user);

      } catch (Exception e) {
         logger.error(e.getMessage());
         FNException fn = new FNException(101, new Object[] { "Adding Note - " + e.getMessage() }, e);
         return new ResponseEntity<>(fn.getErrorResponse(), HttpStatus.INTERNAL_SERVER_ERROR);
      }
      response.setStatus(200);
      response.setResponseMessage(messageAccesser.getMessage("200"));
      return new ResponseEntity<>(response, HttpStatus.OK);
   }

更新 看起来蚂蚁匹配器不起作用。这是我访问 api 时的日志。

DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.s.w.u.matcher.OrRequestMatcher.matches line: 72 - No matches found
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 325 - /notes/addnote at position 5 of 10 in additional filter chain; firing Filter: 'BasicAuthenticationFilter'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 325 - /notes/addnote at position 6 of 10 in additional filter chain; firing Filter: 'RequestCacheAwareFilter'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 325 - /notes/addnote at position 7 of 10 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 325 - /notes/addnote at position 8 of 10 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.s.w.a.AnonymousAuthenticationFilter.doFilter line: 100 - Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 325 - /notes/addnote at position 9 of 10 in additional filter chain; firing Filter: 'SessionManagementFilter'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.s.w.s.SessionManagementFilter.doFilter line: 124 - Requested session ID DE97FB345788E4AB200B922552573A31 is invalid.
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 325 - /notes/addnote at position 10 of 10 in additional filter chain; firing Filter: 'ExceptionTranslationFilter'
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.security.web.FilterChainProxy.doFilter line: 310 - /notes/addnote reached end of additional filter chain; proceeding with original chain
DEBUG [http-nio-8080-exec-3]: 2018-04-18 16:31:03 o.s.web.servlet.DispatcherServlet.doService line: 869 - DispatcherServlet with name 'dispatcherServlet' processing POST request for [/notes/addnote]

Try Web安全配置适配器,你可以参考我下面的demo。我定制了一些过滤器用于验证,如果不需要,只需将其删除。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception{
        auth.authenticationProvider(authenticationProvider());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
        http.addFilterBefore(new CaptchaAuthenticationFilter("/login", "/login?error2"), UsernamePasswordAuthenticationFilter.class);
        http.authorizeRequests()
                .antMatchers("/").hasRole("USER")
                .antMatchers("/index").hasRole("USER")
                .antMatchers("/message/*").hasRole("USER")
                .anyRequest().permitAll()
                .and().formLogin().loginPage("/login").defaultSuccessUrl("/index").failureUrl("/login?error1").permitAll()
                .and().rememberMe().tokenValiditySeconds(60*60*7).key("message")
                .and().logout().logoutUrl("/logout").logoutSuccessUrl("/login").permitAll();
    }

    @Bean
    public AuthenticationProvider authenticationProvider(){
        DaoAuthenticationProvider authenticationProvider=new CustomAuthenticationProvider();
        authenticationProvider.setUserDetailsService(userDetailsService());
        return authenticationProvider;
    }

    @Bean
    public UserDetailsService userDetailsService(){
        return new CustomUserDetailService();
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring security AntMatcher 不工作 的相关文章

  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • eclipse中导入项目文件夹图标

    我在 Eclipse 工作区中新导入的 Maven 项目有J and M项目文件夹顶部的图标 项目和包资源管理器 而其他导入的 Maven 项目只有一个J icon 有人可以解释其中的区别吗 该项目有J装饰器被称为 Java 项目和具有M装
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 带有 @RequestBody 的 Spring 多部分文件

    我正在尝试将数据从应用程序上传到 Spring 后端服务 要上传的内容是一个 DataModel 其中包含要创建的对象的数据以及链接到该数据的多个图像 因此我使用这个方法签名 RequestMapping method RequestMet
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • 隐式超级构造函数 Person() 未定义。必须显式调用另一个构造函数?

    我正在开发一个项目 但收到错误 隐式超级构造函数 Person 未定义 必须显式调用另一个构造函数 我不太明白它 这是我的人物课程 public class Person public Person String name double D
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • set @flag =1 和 set @@flag = 1 之间的区别

    你好 有什么区别 set flag 1 and set flag 1在 SQL Server 中 谢谢 没有什么 一些内置函数的名称以双 at 符号开头 作为一个惯例 为了避免混淆 通常建议您不要使用以 Source MSDN 使用标识符
  • 使用 Json.NET 反序列化包含数字键的 JSON

    我想将以下 JSON 使用 Json NET 反序列化为一个对象 但不能 因为类名需要以数字开头 这方面的一个例子是维基百科文章 API 使用API提供 JSON 响应会返回类似这样的内容 请注意 16689396 在 的里面 pages
  • 将 javascript 中字符串中的所有逗号分隔数字替换为点分隔数字

    假设有一个带有数字的字符串 例如 test test 12 01 test 12 4 12 3 s 2 some other text other text 2 text 我需要将带逗号的数字替换为带点的相同数字 并且不更改任何其他内容 所
  • 为什么 gcc 中“-l”选项的顺序很重要? [复制]

    这个问题在这里已经有答案了 我正在尝试编译一个使用udis86图书馆 实际上我正在使用中给出的示例程序用户手册图书馆的 但是编译的时候却报错 我得到的错误是 example c text 0x7 undefined reference to
  • JavaScript 中缺少分号导致 IE9 中出现“‘foo’未定义”错误

    我只花了大约四个小时来解决这个问题 我知道是什么原因造成的 但不知道为什么 为什么 困扰着我 我有以下 js 文件 function funcA function funcB do while 1 1 return 0 我还有以下 HTML
  • 制作 FPS 淋浴? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试制作一个显示 FPS 的字符串 但是 我如何真正获得我的程序 FPS 我想用 g drawString getFPS 10 10 我如何获得我的 FPS 这段代码适合我
  • void 方法不能返回值

    我正在网上关注 CS106A 讲座 我正在查看第 12 讲中的代码 但它在 Eclipse 中给了我错误 这是我的代码 看来错误是因为我的中的 void 这个词main方法 我尝试删除main方法 但是Java当然不能没有它运行 我是新手
  • 如何使 HandleErrorAttribute 与 Ajax 一起使用?

    在我的 ASP NET MVC 2 应用程序中 我使用 HandleErrorAttribute 在出现未处理异常的情况下显示自定义错误页面 并且除非异常发生在 Ajax ActionLink 调用的操作中 否则它可以正常工作 在这种情况下
  • 是否可以使用Javascript关闭Android浏览器?

    我想在网页中放置一个 关闭 按钮 我们的客户想要这样做 当我单击此按钮时 我想关闭浏览器 不是当前选项卡 而是 Android 浏览器 IE Firefox Chrome 等中的 浏览器 我查了一下 找到了一个方法 window close
  • 有没有办法用 Pillow 绘制渐变颜色的文本?

    我即将创建一个带有文字的图像 到目前为止一切正常 现在 为了进行微调 我认为使用渐变颜色的文本会很好 这就是我的重点现在 at 这就是我want具有 我已经成功生成了以下图像 使用该脚本 from PIL import Image Imag
  • Java中易失性和同步的区别

    我想知道将变量声明为volatile并且总是访问 a 中的变量synchronized this Java 中的块 根据这篇文章http www javamex com tutorials synchronization volatile
  • 表格行折叠/展开 css

    我正在使用以下示例Demo由 PSL 在网站上的帖子中提供 我有一个大表 当页面仅加载标题时 我不希望显示所有行 我应该改变border collapse collapse CSS 中的属性 在 dom 准备好后 你可以隐藏非 header
  • SQL java获取分配给自动增量主键的值[重复]

    这个问题在这里已经有答案了 我的表中有一个主键自动增量属性 我想知道为使用 statements executeUpdate 插入的行分配给它的值 如何以最好的方式实现这一目标 Use Statement getGeneratedKeys
  • Java 中的 Math.pow 错误

    我 显然 只是在学习编程 我似乎不知道该怎么做才能摆脱这个错误 错误位于倒数第二行 之前的行 System out print windChill 这里 写在下面 是 Java 生成的针对我遇到的错误的 可能提示 列表 expected m
  • 如何访问 iframe 复选框元素

    我有一个由复选框 父级 组成的网页 在同一个网页上 我还有一个来自另一个页面的 iframe 该页面显示许多记录 该页面还针对每条记录都有一个复选框 子级 如果我勾选父复选框 我想将其级联到 iframe 中的所有子复选框 并禁用这些子复选
  • 如何将参数从 Swift 本机代码“放入”Flutter

    我正在尝试将参数从 Swift 中的回调方法传递到 Flutter 这是我想要在我的本机 Java 代码中实现的示例 Override public void onRewardRequest final TJPlacement tjPlac
  • 阻止 Adob​​e Edge preload.js 文件加载 jquery

    首先我必须说 我不是一个专业的程序员 而是一个从实践中学习的设计师 因此 如果可能的话 恐怕我需要简单的解释 我在特定脚本的帮助下使用 Edge animate 作为网站的一部分 由 Andrew Trice 编写 请参见此处 http w
  • AngularJS:重用具有不同父级的组件

    假设我有 A 和 B 可重用组件 我希望 B 调用 A 上的方法 当然只有当 B 是 A 的子级时 此外 我希望 B 用作独立组件 没有 A 作为父级 在这种情况下 不应调用不存在的 A 中的方法 我的第一次尝试是在链接功能中获取控制器 与
  • Flask-Admin针对不同角色的不同表单和column_list

    跟进这个问题Flask Admin Role Based Access 根据角色修改访问权限我不明白如何实现基于角色的视图 特别是关于表单和列列表 说我想要MyModelView如果用户是普通用户或超级用户 则显示不同的列 覆盖is acc
  • Spring security AntMatcher 不工作

    这是我配置 spring security 的方式 在控制器中我获得 ROLE ANONYMOUS 作为权限 看起来安全性并没有拦截请求并检查 JWT 如何配置antmatcher Configuration EnableResourceS