springsecurity第三章——一些的基本功能——自定义登录退出的实现

在了解了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

猜你喜欢

转载自zhh9106.iteye.com/blog/1976718