首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring Security (1)

2013-07-16 
Spring Security (一)最近学习了一系列关于Spring security安全框架,不知道在项目中使用的多不多?jar在官

Spring Security (一)
最近学习了一系列关于Spring security安全框架,不知道在项目中使用的多不多?
jar在官网下载:最新Spring Security 3.2.0.M2地址:http://www.springsource.org/download/community
一下用的是静态数据,没有连接数据库
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>

Spring.xml配置:
<security:http auto-config="true" access-denied-page="/403.jsp"><!-- login-page:默认指定的登录页面. authentication-failure-url:出错后跳转页面. default-target-url:成功登陆后跳转页面 -->       <security:form-login login-page="/security/login.jsp" authentication-failure-url="/403.jsp" default-target-url="/login!home.action" />    <!-- logout-success-url:成功注销后跳转到的页面; -->   <security:logout logout-success-url="/security/login.jsp"/>    <!-- intercept-url:拦截器,可以设定哪些路径需要哪些权限来访问. filters=none/security=none 不使用过滤,也可以理解为忽略  以下:ROLE_USER角色的用户才可以访问user.action --><security:intercept-url pattern="/user.action*" access="ROLE_USER" /><security:intercept-url pattern="/admin.action*" access="ROLE_ADMIN" /></security:http><!-- 权限管理操作 -->       <security:authentication-manager>        <security:authentication-provider> <!--       使用固定的用户名和密码及权限来做验证. -->                     <security:user-service>                <security:user name="admin" password="admin" authorities="ROLE_ADMIN" />                <security:user name="user" password="user" authorities="ROLE_USER" />                   </security:user-service>        </security:authentication-provider>    </security:authentication-manager>

登陆的jsp:
<form id="test" action="${path}/j_spring_security_check" method="post">    name<input id="name" name="j_username"/><br/>    password<input id="password" name="j_password" value="submit"/>    </form>

由于验证过程是Spring Security框架自动完成的,所以在我们的登录页面中表单元素的name
都是固定的。
如果要显示登录错误信息加上${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}
在spring.xml配上一个bean:
<bean id="messageSource" value="classpath:message_zh_CN"/>    </bean>

删掉这个配置authentication-failure-url="/403.jsp"
在src路径下新建一个message_zh_CN(解压官方文档spring-security-core-3.2.0.M1)修改AbstractUserDetailsAuthenticationProvider.badCredentials=密码错误

登陆后的页面:
<a href="${path}/user.action">User 用户入口</a><br/><a href="${path}/admin.action">Admin用户入口</a><br/><a href="${path}/j_spring_security_logout">注销吧</a>

如果通过地址栏直接访问需要权限的资源,将会被拦截,返回到登陆页面(若没有登陆页面)spring会自动创建一个登陆页面。当在登录页面进行了正确的登录后,Spring Security会自动进行登录验证,如果成功登录,
将用户信息放到session 中,然后转到先前请求的页面上。

热点排行