gpt4 book ai didi

java - 如何在 Spring 应用程序中添加 Java Melody Monitor URL 的安全性

转载 作者:行者123 更新时间:2023-12-02 08:57:07 33 4
gpt4 key购买 nike

我们在 Spring 应用程序中使用 Java Melody。我想添加安全性以仅由管理员用户访问 /monitoring url。我必须根据应该获得访问权限来检查一些属性值和权限。

有哪些不同的方法可以实现这一目标?我们可以在 Spring Security 中做到这一点吗?

如果我需要在此处提供任何其他信息,请告诉我。

最佳答案

您可以使用 javamelody 参数 authorized-users 进行 http 基本身份验证,或使用 allowed-addr-pattern 进行基于 IP 地址的访问。请参阅https://github.com/javamelody/javamelody/wiki/UserGuide#16-security

例如在 application.yml 中,如果您使用 Spring-boot:

javamelody:
init-parameters:
authorized-users: admin:password

或者您可以将 Spring security 与 .antMatchers("/monitoring").hasRole("ADMIN") 结合使用。

例如在 Spring-boot 2 中,使用 spring-boot-starter-security 依赖项、基本身份验证和内存用户存储:

import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests().antMatchers("/monitoring").hasRole("ADMIN")
.anyRequest().permitAll();
}

@Bean
@Override
public UserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder().username("user").password("password")
.roles("USER").build();
UserDetails admin = User.withDefaultPasswordEncoder().username("admin").password("password")
.roles("ADMIN").build();

return new InMemoryUserDetailsManager(user, admin);
}
}

如果您在没有 Spring boot 的情况下使用 Spring security,请务必将 Spring Security 过滤器放在 web.xml 文件中的 javamelody 监控过滤器之前。

关于java - 如何在 Spring 应用程序中添加 Java Melody Monitor URL 的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60431035/

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