gpt4 book ai didi

spring - Spring 安全性中的多个 antMatchers

转载 作者:IT老高 更新时间:2023-10-28 13:44:14 25 4
gpt4 key购买 nike

我在内容管理系统上工作,它有五个 antMatchers,如下所示:

http.authorizeRequests()
.antMatchers("/", "/*.html").permitAll()
.antMatchers("/user/**").hasRole("USER")
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/admin/login").permitAll()
.antMatchers("/user/login").permitAll()
.anyRequest().authenticated()
.and()
.csrf().disable();

假设访问者可以在根路径(/*)看到所有站点,并且用户只能看到(/user),admin只能看到(/admin),并且有两个登录页面一个供用户使用另一个用于管理员。

代码似乎工作正常,除了管理部分 - 它不起作用但返回访问被拒绝异常。

最佳答案

我认为问题出在您的规则的顺序上:

.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/admin/login").permitAll()

规则的顺序很重要,更具体的规则应该放在第一位。现在以 /admin 开头的所有内容都需要经过身份验证的具有 ADMIN 角色的用户,即使是 /admin/login 路径(因为 /admin/login 是已经被 /admin/** 规则匹配,因此第二条规则被忽略)。

因此,登录页面的规则应位于 /admin/** 规则之前。例如

.antMatchers("/admin/login").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")

关于spring - Spring 安全性中的多个 antMatchers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30819337/

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