默认情况下,SEC:authorize-URL标记不适用于Spring boot security:
git clone https://github.com/spring-projects/spring-boot
添加依赖项
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity3</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
@RequestMapping("/")
public String home(Map<String, Object> model) {
model.put("message", "Hello World");
model.put("title", "Hello Home");
model.put("date", new Date());
return "home";
}
@RequestMapping("/admin/foo")
public String home2(Map<String, Object> model) {
model.put("message", "Hello World");
model.put("title", "Hello Home");
model.put("date", new Date());
return "home";
}
http.authorizeRequests().antMatchers("/login").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
...
<div sec:authorize="hasRole('ROLE_ADMIN')">
has role admin
</div>
<div sec:authorize-url="/admin/foo">
can see /admin
</div>
我是不是漏掉了什么?这是预期的行为吗?我需要定义什么才能使authorize-url像使用XML配置安全性时那样工作?
此问题与SpringBootWebSecurityConfiguration中的基本身份验证及其自动配置有关:
在SampleMethodSecurityApplication中,通过替换以下命令更改ApplicationSecurity顺序:
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
@Order(SecurityProperties.BASIC_AUTH_ORDER + 1)
security.basic.enabled: false
我找到了以下解决办法。只需在SecurityConfig中手动注册安全拦截器:
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
protected static class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Override
public void configure(final WebSecurity web) throws Exception {
final HttpSecurity http = getHttp();
web.postBuildAction(new Runnable() {
@Override
public void run() {
web.securityInterceptor(http.getSharedObject(FilterSecurityInterceptor.class));
}
});
}
它允许您使用推荐的ACCESS_OVERRIDE_ORDER和http基本自动配置。我在这里张贴了更多的细节,任何解释为什么这是工作是赞赏的。
使用thymeleaf-extras-springsecurity4应该可以解决这个问题
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>
我正在尝试为uber生成授权url https://login.uber.com/oauth/authorize?client_id=xxxx&response_type=code&scope=history&redirect_uri=HTTP%3a%2f%2flocalhost%2fcallback 好的 https://login.uber.com/oauth/authorize?client
我有以下Spring Security配置: 我想让每个人(包括经过身份验证的用户和未经身份验证的用户)都可以访问特定的页面(比如索引页面(“/”),但同时,能够根据用户是否经过身份验证以及其角色来管理应该在jsp中看到哪些部分。 我的jsp部分如下所示: 所有的认证机制都可以正常工作。问题是,即使我使用“管理员”角色登录,链接也永远不会显示。 我尝试调试我的userdetails服务实现,并验证
我正在尝试使用Spring Boot、Spring Security4、Thymeleaf,如果用户有角色“admin”或其他任何东西,html块应该会显示出来,但现在它总是显示在页面上。这是我的html 这里是我的pom.xml,我添加了thymeleaf-extras-springsecurity4。还尝试了thymeleaf-extras-springsecurity3 这是我的securi
我发现了许多类似的问题,但没有一个解决了我的问题。我的问题是可以访问的函数 下面是我的spring-security.xml代码。
我想在我的Spring mvc项目之一中实现基于URL的授权。在我的Spring mvc项目中,我使用java配置。我已将此站点https://www.baeldung.com/role-and-privilege-for-spring-security-registration以实现基于角色和特权的授权。 所以我创建了下面的表来实现。 这是用户表。 这个角色表。 这是角色和特权之间的映射表。 这
我正在尝试使用aws api网关授权器和cognito用户池。当我使用aws api网关控制台进行测试时,它工作得很好。 但当我尝试在api中启用授权时,它显示请查看下面的屏幕截图 有人能帮忙吗。