我们在春季应用中使用Java Melody
。我想增加安全性,以仅由管理员用户访问/monitoring
网址。我必须检查一些属性值和基于该属性值和权限的访问权限。
有哪些不同的方法可以实现这一目标?我们可以在春季安全中做到吗?
[如果需要在此处提供其他信息,请告诉我。
您可以将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引导的情况下使用Spring Security,请确保在Web.xml文件中将Spring Security过滤器放在javamelody Monitoring过滤器之前。