如何使用基于java的配置创建两个http安全配置?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用基于java的配置创建两个http安全配置?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2551字,纯文字阅读大概需要4分钟。
内容图文
![如何使用基于java的配置创建两个http安全配置?](/upload/InfoBanner/zyjiaocheng/725/85fcfc12558948c19d77adac895ea8c9.jpg)
在XML配置中,我可以创建以下内容:
<security:http pattern="/api/**"
create-session="never"
use-expressions="true">
<security:http-basic entry-point-ref="xBasicAuthenticationEntryPoint"/>
<security:session-management />
<security:intercept-url pattern="/tests/**" access="isAuthenticated()"/>
<security:intercept-url pattern="/api/**" access="isAuthenticated()"/>
</security:http>
<security:http auto-config="true" use-expressions="true" realm="ACME">
<security:intercept-url pattern="/favicon.ico" access="permitAll" />
<security:intercept-url pattern="/static/**" access="permitAll"/>
<security:intercept-url pattern="/error/**" access="permitAll" />
<security:intercept-url pattern="/" access="permitAll"/>
<security:intercept-url pattern="/login" access="permitAll"/>
<security:intercept-url pattern="/logout" access="isAuthenticated()"/>
<security:form-login login-page='/login'
authentication-failure-url="/login?error"/>
<security:logout logout-url="/logout" logout-success-url="/"/>
</security:http>
如果没有会话,这将允许对/ api / **的所有调用不尝试验证用户.
如何使用基于Java的配置创建相同的配置?
我的WebSecurityConfigurerAdapter #configure(HttpSecurity)方法如下所示:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilter(switchUserFilter())
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/static/**").permitAll()
.anyRequest().authenticated()
.and().formLogin()
.loginPage("/login")
.permitAll()
.defaultSuccessUrl("/")
.and().logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/");
}
解决方法:
在Spring安全参考手册中明确指出,您可以使用@Order()注释添加尽可能多的带有@Configuration注释的内部类,以指定首先检查哪些内部类.在您的示例中,它可能看起来像:
@Order(1)
@Configuration
private static class ApiSecurityConfigurationAdapter
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/api/**")
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)
.and.httpBasic().authenticationEntryPoint(xBasicAuthenticationEntryPoint)
.and.authorizeRequests()
.anyRequest().authenticated();
}
}
@Configuration
private static class NormalSecurityConfigurationAdapter
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilter(switchUserFilter())
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/static/**").permitAll()
.anyRequest().authenticated()
.and().formLogin()
.loginPage("/login")
.permitAll()
.defaultSuccessUrl("/")
.and().logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/");
}
}
内容总结
以上是互联网集市为您收集整理的如何使用基于java的配置创建两个http安全配置?全部内容,希望文章能够帮你解决如何使用基于java的配置创建两个http安全配置?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。