我是Spring Security的新手,我正在尝试使用Spring Security创建一个登录表单。
这是必需的方案:
1)用户使用用户名 - 密码登录应用程序(请注意我使用的是Spring Security提供的默认登录页面) 2)如果登录正常,则用户转到eventList.jsp 3)如果登录是KO(错误的凭证),则显示错误
我的WebSecurityConfigurerAdapter配置:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("amdin").password("111111").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin().defaultSuccessUrl("/eventList");
}
错误1:如果我插入正确的凭据我看不到/ eventList,但我收到404(/spring-security-helloworld-annotation/WEB-INF/pages/login.jsp)。为什么我没有重定向到/ eventList? (pheraps因为/ eventList只接受我的RequestMapping注释中的GET?
@RequestMapping(value = {"/eventList"}, method = RequestMethod.GET)
错误2:如果我尝试“手动”转到/ eventList,通过在浏览器的URL末尾添加“eventList”,我可以访问所请求的页面而无需执行登录操作!我想要在不执行登录操作的情况下访问的URL只是登录页面本身!!!
.anyRequest().authenticated()
行不应该允许这一切!!!
我怎样才能获得我想要的东西?
TY提前
答案 0 :(得分:0)
正确的安全链如下所示:
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/eventList")
.permitAll()
.and()
.logout()
.permitAll();
您忘记了permitAll()
语句以及定义loginPage()
希望能帮助到你!如果你需要进一步的帮助,请给我一个下午。