在了解了springSecurity的大体认证过程之后,就要从基本开始一步一步的深入学习其内部实现。
1、自定义登录界面
首先,一个软件应用要有一个验证入口(登录界面),而springsecurity提供了一个默认的登录界面,但是由于用户体验和结合自身网站的特性,一般都是自定义一个登录界面。而security框架的开发者也想到了这个问题,所以security提供了其他开发者设置自定义登录界面的方法。
配置自定义登录页面步骤:1、在配置文件中添加一句配置:<form-login login-page="/login.jsp">,这里login- page的值根据各自网站而定。
2、security对自定义登陆页面的form表单也有一定的要求,因为security的过滤器 默认拦截的action是:j_spring_security_check,提交方法是:post,用户 名和密码的参数的name也有限制,具体例子如图:
在我们开发自定义登陆页的过程中,我们需要遵守security的这些约定。至于为什么会配置了这个,就能实现自定义登录机制呢?
这是因为配置文件中配置了<http auto-config="true"> 这个配置会默认配置一个叫DefaultLoginPageGeneratingFilter的过滤器,系统检测到没有自定义登陆页时,过滤器就会默认跳到默认登陆页,但当我们配置了<form-login login-page="/login.jsp">这个配置时,那么就会覆盖掉原来的默认配置,所以自定义登录页就生效了。
2、自定义退出
因为配置文件中配置了<http auto-config="true"> ,所以如果没有特别去定义的话,所有的配置都按照默认配置去做。security也默认配置了退出的url:j_spring_security_logout,过滤器链中的logoutFilter会默认去匹配这个url,然后执行退出。当然,由于每个应用都不同,退出的方式及其退出前的操作也不同,所以security提供了一个标签让开发者自定义退出功能。
自定义退出的步骤:
1、在配置文件里,配置一句:<logout invalidate-session="true" logout-success-url="logoutsuccess.jsp" logout-url="/logout">,如果按照这句配置,执行退出功能时,会有以下三个效果:
一、使得当前http session 失效(如果invalidate-session值为true)
二、清除securityContext(真正退出)
三、将页面重定向到ogout-success-url指定的url