Spring Security 3.1 自定义实例之登陆

Spring Security 3.1 自定义实例之登陆

Spring Security的前身是Acegi,功能强大,配置也比较复杂,我也是新手,先通过动手实现一个登陆验证实例来进入Spring Security的世界吧!

1.准备:

下载Spring Security:官方下载地址:在下载之前Spring会要你填写一些基本信息,然后就会自动跳转到下载地址,目前最新版本为spring-security-3.1.0.RELEASE,解压后在dist目录下可以看到:

其中两个War包是实例,*-source.jar是源代码

将dist中的Jar包全部导入到工程中,如图:

2.修改web.xml,插入以下代码

<filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern> </filter-mapping>修改context-param项,目的就是带起接下来要新建的AppSecurity.xml(名字随意)

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:App*.xml</param-value> </context-param>3.新建AppSecurity.xml,如下:

<?xml version="1.0" encoding="UTF-8"?><beans:beans xmlns="" xmlns:xsi="" xmlns:beans="" xsi:schemaLocation=" "> <http auto-config="true"><intercept-url pattern="/*" access="ROLE_USER" /></http> <authentication-manager alias="authenticationManager"><authentication-provider> <user-service> <user name="test" password="test" authorities="ROLE_USER" /> </user-service> </authentication-provider> </authentication-manager></beans:beans>这个xml文件里用了Spring Security的最简单配置<http auto-config="true"/>含义就是使用Spring Security自动为我们设置一些参数,然后声明了访问所有URL都需要为ROLE_USER,然后在authentication-manager用硬编码的形式定义了一个用户test,权限为ROLE_USER,运行这个实例应该可以看到这样的登录界面:

这个界面就是SpringSecurity为我们提供的登陆界面;

上面这个实例太简单了,在现实项目中基本不会这么用,比如项目如有如下需求:

1.自定义登录界面;

2.用Ajax方式登录验证;

3.用数据库记录用户信息,进行登录验证;

4.用MD5方式密码加密;

OK 接下来我们先来看看自定义登录界面的配置实例吧!

1.修改AppSecurity.xml中的http项,如下:

<http auto-config="true"><intercept-url pattern="/login.jsp" filters="none" /><intercept-url pattern="/*" access="ROLE_USER" /><form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.jsp"/></http>

login-page:当用户登录时显示自定义登录页面authentication-failure-url:登录失败时跳转到哪个页面default-target-url:登录成功后跳转到哪个页面

这样就把默认的登录界面指向了login.jsp了,并且配置了出错后的指向路径和默认跳转路径等信息,当然这里的login.jsp需要任何人都可以访问,不然的话会造成循环调用

2.设计login.jsp,关键代码如下:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>登陆界面</title></head><body><h3>欢迎登陆</h3><form action=’/ctosii_middle/j_spring_security_check’ method=’POST’><table> <tr><td>用户名:</td><td><input type=’text’ value=”></td></tr> <tr><td>密 码:</td><td><input type=’password’/></td></tr> <tr><td colspan=’2′><input name="submit" type="submit" value="登陆"/></td></tr> </table></form></body></html>大家可以看到这里的action指向了j_spring_security_check,这个路径也是Spring Security为我们自动生成的,这里需要post的两个个参数为j_username,j_password,运行这个实例可以看到如下登陆界面:

2.用ajax的方式实现的登录验证

Spring Security默认的是登陆验证通过用跳转的方式,但是在实际应用中很多应用的登录界面需要用到ajax的方式来实现登陆验证

1.修改AppSecurity.xml中的http项,如下:

仿佛松树就是一位威风的将军,守护着国家的国民。

Spring Security 3.1 自定义实例之登陆

相关文章:

你感兴趣的文章:

标签云: