import com.cellpointmobile.email.services.AuthenticationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
public class EmailSecurityAdapter extends WebSecurityConfigurerAdapter {
@Autowired
AuthenticationService userDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
auth.authenticationProvider(authenticationProvider());
}
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/healthCheck**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "**/heathCheck/*").permitAll()
.anyRequest()
.access("isFullyAuthenticated() and hasAnyRole('ROLE_ADMIN','ROLE_USER')")
.and()
.httpBasic();
}
@Bean
public PasswordEncoder passwordEncoder() {
//https://www.browserling.com/tools/bcrypt
return new BCryptPasswordEncoder();
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
authenticationProvider.setUserDetailsService(userDetailsService);
authenticationProvider.setPasswordEncoder(passwordEncoder());
return authenticationProvider;
}
}
<Map>
<timestamp>2019-09-13</timestamp>
<status>401</status>
<error>Unauthorized</error>
<message>Unauthorized</message>
<path>/heathCheck</path>
</Map>
使用
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "**/heathCheck/**").permitAll()
.anyRequest()
.access("isFullyAuthenticated() and hasAnyRole('ROLE_ADMIN','ROLE_USER')")
.and()
.httpBasic();
}
或者在configure(WebSecurity web)中使用web.Ilighing()
,这将为特定于它的endpointingore所有安全筛选器。之后,可以将其从configure(HttpSecurity http)
中删除,并将configure(WebSecurity web)
保持在configure(HttpSecurity http)
之上。
HttpSecurity与WebSecurity
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers(HttpMethod.yourMethod, "**/heathCheck/**");
}
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers(HttpMethod.yourMethod, "**/heathCheck/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "**/heathCheck/*").permitAll()
.anyRequest()
.access("isFullyAuthenticated() and hasAnyRole('ROLE_ADMIN','ROLE_USER')");
}
我在gradle中使用flyway,我在数据库控制台中手动运行了其中一个迁移,我想运行flyway,但告诉它忽略所有其他迁移版本之间的一个特定迁移版本。可以这样做吗?
所以我有 我读过Baeldung的文章和其他东西,但似乎我的选项是自定义类型(这是一个原始类型)或全局类型。如何实现这种自定义序列化?
我有一个视图寻呼机,它的适配器上有片断列表。这就是我想要实现的场景: 假设我们有4个片段:Fragment1 Fragment2 Fragment3 Fragment4 我想在从Fragment4中滑动时跳过fragment3。 任何帮助都是非常感谢的。非常感谢你
我想你可以想象家务控制器中有什么,但为了完整起见,这里有相关的部分: 下面是测试在输出中打印的请求: 那么,为什么我的测试会得到401的返回代码,我如何修复它?
下面是JwtSecurityFilter实现。
本文向大家介绍如何从Cucumber中执行跳过特定的测试方法?,包括了如何从Cucumber中执行跳过特定的测试方法?的使用技巧和注意事项,需要的朋友参考一下 借助功能文件中场景的标记,我们可以跳过在Cucumber中执行的特定测试方法。 示例 功能文件。 具有方案的特征文件,其中方案具有标签烟和付款。 示例 要跳过使用@Payment的方案,在Test Runner文件中,在@Payment标记