如果我们不用form-login说明登陆界面,springsecurity框架将自动为我们生成登陆界面
现在我们不想用自动生成的登陆界面了,而想使用自定义的漂亮的登陆界面
则需要使用<security:form-login/>标签
login-page:指定登陆页面
login-process-url:表单提交的地址
password-parameter:表示登录时密码使用的是哪个参数,默认是 “j_password
”
username-parameter:表示登录时用户名使用的是哪个参数,默认是 “j_username
”
default-target-url:登陆成功以后跳转的页面,用该元素时,需设置always-use-default=true
authentication-failure:登陆失败以后跳转的页面
登陆成功和登陆失败也可以专门写一个类,在类中指定跳转的界面,然后配置一个bean通过ref指定对应处理页面的bean,因为我觉得过于复杂,没有采用这种方法,这里也就提一下有这种方法
具体的springsecurity配置文件如下:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:security="http://www.springframework.org/schema/security" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 6 http://www.springframework.org/schema/security 7 http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 8 9 <!-- 10 自定义表单,通过form-login标签 11 authentication-failure-url指定登陆失败以后应该跳转的页面 12 default-target-url指定登陆成功以后跳转的页面,默认的是index.jsp页面 13 --> 14 <security:http auto-config="true"> 15 <security:form-login login-page="/login.jsp" 16 login-processing-url="/login.do" username-parameter="username" 17 password-parameter="password" 18 default-target-url="/successful.jsp" 19 authentication-failure-url="/login_failure.jsp" 20 always-use-default-target="true" 21 /> 22 <!-- 表示匿名用户可以访问 --> 23 <security:intercept-url pattern="/login*.jsp*" 24 access="IS_AUTHENTICATED_ANONYMOUSLY" /> 25 <security:intercept-url pattern="/**" access="ROLE_USER" /> 26 </security:http> 27 28 <security:authentication-manager> 29 <security:authentication-provider> 30 <security:user-service> 31 <security:user name="user" password="user" authorities="ROLE_USER"/> 32 <security:user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN"/> 33 </security:user-service> 34 </security:authentication-provider> 35 </security:authentication-manager> 36 37 </beans>
我们需要给login.jsp放行,不然我们将不能访问到,放行有两种方法,我选择的是将access设置为“IS_AUTHENTICATED_ANONYMOUSLY
”,当然也可以设置为 “ROLE_ANONYMOUS
”
另外一种是将security设置为none,具体代码如下:
1 <security:http security="none" pattern="/login.jsp" /> 2 <security:http auto-config="true"> 3 <security:form-login login-page="/login.jsp" 4 login-processing-url="/login.do" username-parameter="username" 5 password-parameter="password" /> 6 <security:intercept-url pattern="/**" access="ROLE_USER" /> 7 </security:http>