security java的配置,基于Java的配置以启用Spring Security匿名访问

I want to enable the use of "ROLE_ANONYMOUS" to allow anonymous access to some urls in my app. And I used the below configuration.

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.requestCache()

.requestCache(new NullRequestCache()).and()

.anonymous().authorities("ROLE_ANONYMOUS").and()

.exceptionHandling().and()

.servletApi().and()

.headers().cacheControl().and()

.authorizeRequests()

.antMatchers("/").permitAll()

.antMatchers("/profile/image").permitAll()

.antMatchers("/favicon.ico").permitAll()

.antMatchers("/resources/**").permitAll()

//.antMatchers(HttpMethod.GET, "/login/**").permitAll()

//.antMatchers(HttpMethod.GET, "/location/**").permitAll()

.anyRequest().authenticated()/*.and()

.apply(new SpringSocialConfigurer())*/;

// custom Token based authentication based on the header previously given to the client

//.addFilterBefore(new StatelessAuthenticationFilter(tokenAuthenticationService), UsernamePasswordAuthenticationFilter.class);

}

My controller looks like:

@RestController

@RequestMapping(value="/login", produces="application/json")

public class LoginController {

@Secured( value={"ROLE_ANONYMOUS"})

@RequestMapping(method=RequestMethod.GET)

public String get(){

return "hello";

}

}

But when I try to hit "/login" I get 403 access denied error.

Please help me how I can enable annotation based anonymous access.

解决方案

As Faraj Farook wrote, you have to permit access to your login page URL. You commented the relevant line out:

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.anonymous()

.authorities("ROLE_ANONYMOUS")

.and()

.headers()

.cacheControl()

.and()

.authorizeRequests()

.antMatchers("/").permitAll()

.antMatchers("/profile/image").permitAll()

.antMatchers("/favicon.ico").permitAll()

.antMatchers("/resources/**").permitAll()

.antMatchers(HttpMethod.GET, "/login/**").permitAll()

.anyRequest().authenticated()

}

But if you prefer not to use permitAll() you could use hasAuthority("ROLE_ANONYMOUS"). In this case you don't need to annotate your method with

@Secured( value={"ROLE_ANONYMOUS"}).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值