码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Security教程系列(一)基础篇-2

时间:2015-11-27 12:32:31      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

 第 4 章 自定义登陆页面

 

Spring Security虽然默认提供了一个登陆页面,但是这个页面实在太简陋了,只有在快速演示时才有可能它做系统的登陆页面,实际开发时无论是从美观还是实用性角度考虑,我们都必须实现自定义的登录页面。

4.1. 实现自定义登陆页面

自己实现一个login.jsp,放在src/main/webapp/目录下。

 

4.2. 修改配置文件

在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]
 

4.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功能好像用不了,待续

 

4.4. 测试一下

经过以上配置,我们终于使用了一个自己创建的登陆页面替换了原来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

 


 

Spring Security教程系列(一)基础篇-2

标签:

原文地址:http://www.cnblogs.com/crazylqy/p/5000064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!