标签:
第 4 章 自定义登陆页面
Spring Security虽然默认提供了一个登陆页面,但是这个页面实在太简陋了,只有在快速演示时才有可能它做系统的登陆页面,实际开发时无论是从美观还是实用性角度考虑,我们都必须实现自定义的登录页面。
在xml中的http标签中添加一个form-login标签。
<http auto-config="true"> <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />1 <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" /> <intercept-url pattern="/**" access="ROLE_USER" /> <form-login login-page="/login.jsp" 2
authentication-failure-url="/login.jsp?error=true" 3
default-target-url="/index.jsp" />4 </http>
1
让没登陆的用户也可以访问login.jsp。[2]
这是因为配置文件中的“/**”配置,要求用户访问任意一个系统资源时,必须拥有ROLE_USER角色,/login.jsp也不例外,如果我们不为/login.jsp单独配置访问权限,会造成用户连登陆的权限都没有,这是不正确的。
2
login-page表示用户登陆时显示我们自定义的login.jsp。
这时我们访问系统显示的登陆页面将是我们上面创建的login.jsp。
3
authentication-failure-url表示用户登陆失败时,跳转到哪个页面。
当用户输入的登录名和密码不正确时,系统将再次跳转到/login.jsp,并添加一个error=true参数作为登陆失败的标示。
4
default-target-url表示登陆成功时,跳转到哪个页面。[3]
以下是我们创建的login.jsp页面的主要代码。
<body> <div class="error ${param.error == true ? ‘‘ : ‘hide‘}"> ${sessionScope[‘SPRING_SECURITY_LAST_EXCEPTION‘].message} </div> <form action="${pageContext.request.contextPath}/j_spring_security_check" method="post"> <fieldset> <legend>登陆</legend> 用户: <input type="text" name="j_username" style="width:150px;" value="${sessionScope[‘SPRING_SECURITY_LAST_USERNAME‘]}"/><br /> 密码: <input type="password" name="j_password" style="width:150px;" /><br /> <input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br /> <input type="submit" value="登陆"/> <input type="reset" value="重置"/> </fieldset> </form> </body>
1
/j_spring_security_check,提交登陆信息的URL地址。
自定义form时,要把form的action设置为/j_spring_security_check。注意这里要使用绝对路径,避免登陆页面存放的页面可能带来的问题。[4]
2
j_username,输入登陆名的参数名称。
3
j_password,输入密码的参数名称
4
_spring_security_remember_me,选择是否允许自动登录的参数名称。
可以直接把这个参数设置为一个checkbox,无需设置value,Spring Security会自行判断它是否被选中。
?????????? _spring_security_remember_me功能好像用不了,待续
经过以上配置,我们终于使用了一个自己创建的登陆页面替换了原来Spring Security默认提供的登录页面了。我们不仅仅是做个样子,而是实际配置了各个Spring Security所需的参数,真正将自定义登陆页面与Spring Security紧紧的整合在了一起。以下是使用自定义登陆页面实际运行时的截图。
登陆失败
登陆成功
[2] 有关匿名用户的知识,我们会在之后的章节中进行讲解。
[3] 登陆成功后跳转策略的知识,我们会在之后的章节中进行讲解。
[4] 关于绝对路径和相对路径的详细讨论,请参考http://www.family168.com/tutorial/jsp/html/jsp-ch-03.html#jsp-ch-03-04-01
标签:
原文地址:http://www.cnblogs.com/crazylqy/p/5000064.html