spring security配置表单登录

预置url和页面

之所以会有以上效果,是因为formLogin自动配置了一些url和页面:

  • /login (get):登录页面,任意没有登录的请求都会跳转到这里,就是上面看到的那个页面。
  • /login (post):登录接口,在登录页面点击登录,会请求这个接口。
  • /login?error:用户名或密码错误,跳转到该页面。
  • /:登录成功后,默认跳转的页面,/会重定向到index.html,这个页面要你自己实现。
  • /logout:注销页面。
  • /login?logout:注销成功跳转页面。
@SpringBootConfiguration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
	protected void configure(HttpSecurity http) throws Exception  {
		http
			.authorizeRequests()//配置权限
				.anyRequest().authenticated()//任意请求需要登录
				.and()
			.formLogin()//开启formLogin默认配置			        
				.loginPage("/login/auth").permitAll()//请求时未登录跳转接口
		                .failureUrl("/login/fail")//用户密码错误跳转接口
				.defaultSuccessUrl("/login/success",true)//登录成功跳转接口
				.loginProcessingUrl("/login")//post登录接口,登录验证由系统实现
				.usernameParameter("username")	//要认证的用户参数名,默认username
				.passwordParameter("password")	//要认证的密码参数名,默认password
				.and()
			.logout()//配置注销
				.logoutUrl("/logout")//注销接口
				.logoutSuccessUrl("/login/logout").permitAll()//注销成功跳转接口
				.deleteCookies("myCookie") //删除自定义的cookie
				.and()
			.csrf().disable();           //禁用csrf
	}
  • 未登录用户请求/hello会跳转到/login/auth接口,但这个接口本生也需要登录才能请求,所以其配置了permitAll允许任何人请求,包含未登录用户。/login/logout也是同理。其他接口没有配置permitAll,因为它们已经处于登录状态,或者会被特别处理,如登录接口只会被特定过滤器拦截处理,以后会讲。
  • true:是指登录成功后,始终跳转到登录成功url。它默认为false,就像上面请求/hello时未登录,跳转到登录页面。而登录成功后又自动跳回到/hello,而不是跳转到登录url,这显然不符合前后端分离模式。
  • 在登录时,如果手动创建了cookie,可以用deleteCookies方法删除。如果是系统自动创建的一些数据,在注销时系统会自动清理。如果还有cookie以外的自定义数据可在注销成功接口去清理。
  • csrf().disable():csrf功能默认会开启,用于防止跨站伪造请求,以后会讲,现在先禁用,否则将无法登录。
    spring security配置表单登录
发布了16 篇原创文章 · 获赞 0 · 访问量 403

猜你喜欢

转载自blog.csdn.net/weixin_43532415/article/details/105625232