JSP 开发之Spring Security详解
JSP 开发之Spring Security详解
前言
spring Security是一个能够为基于Spring的企业应用系统提供描述性安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。
功能
Spring Security对Web安全性的支持大量地依赖于Servlet过滤器。这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安全处理。 Spring Security提供有若干个过滤器,它们能够拦截Servlet请求,并将这些请求转给认证和访问决策管理器处理,从而增强安全性。根据自己的需要,可以使用表7.4中所列的几个过滤器来保护自己的应用程序。
如果使用过Servlet过滤器,那么知道要让它们生效,就必须在Web应用程序的web.xml文件中使用<filter> 和<filter-mapping>元素配置它们。虽然这样做能起作用,它并不适用于使用依赖注入进行的配置。
FilterToBeanProxy是一个特殊的Servlet过滤器,它本身做的工作并不多,而是将自己的工作委托给Spring应用程序上下文 中的一个Bean来完成。被委托的Bean几乎和其他的Servlet过滤器一样,实现javax.servlet.Filter接 口,但它是在Spring配置文件而不是web.xml文件中配置的。
实际上,FilterToBeanProxy代理给的那个Bean可以是javax.servlet.Filter的任意实现。这可以是 Spring Security的任何一个过滤器,或者它可以是自己创建的一个过滤器。正如本书已经提到的那样,Spring Security要求至少配置四个而且可能一打或者更多的过滤器
通过在许多项目中实践应用以及社区的贡献,如今的Spring Security已经成为Spring Framework下最成熟的安全系统,它为我们提供了强大而灵活的企业级安全服务,如
- 认证授权机制
- Web资源访问控制
- 业务方法调用访问控制
- 领域对象访问控制Aess Control List(ACL)
- 单点登录(Central Authentication Service)
- X509认证
- 信道安全(Channel Security)管理等功能
简单例子
1、创建web工程springSecurity3
2、把从spring网站下载的spring-security-3.1.0.RELEASE解压,并将其中的spring-security-samples-contacts-3.1.0.RELEASE.war解压,将jar包放到lib目录下。
3、修改配置web.xml如下
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun./xml/ns/javaee" xmlns:xsi="http://.w3./2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun./xml/ns/javaee http://java.sun./xml/ns/javaee/web-app_2_5.xsd"> <!--加载Spring XML配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:securityConfig.xml </param-value> </context-param> <!-- Spring Secutiry3.1的过滤器链配置 --> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <!-- Spring 容器启动监听器 --> <listener> <listener-class>.springframework.web.context.ContextLoaderListener</listener-class> </listener> <wele-file-list> <wele-file>index.jsp</wele-file> </wele-file-list> </web-app>
4、在src狼蚁网站SEO优化创建securityConfig.xml文件内容如下
<?xml version="1.0" encoding="UTF-8"?> <b:beans xmlns="http://.springframework./schema/security" xmlns:b="http://.springframework./schema/beans" xmlns:xsi="http://.w3./2001/XMLSchema-instance" xsi:schemaLocation="http://.springframework./schema/beans http://.springframework./schema/beans/spring-beans-3.0.xsd http://.springframework./schema/security http://.springframework./schema/security/spring-security-3.1.xsd"> <!--登录页面不过滤 --> <http pattern="/login.jsp" security="none"/> <http aess-denied-page="/aessDenied.jsp"> <form-login login-page="/login.jsp"/> <!--访问/admin.jsp资源的用户必须具有ROLE_ADMIN的权限 --> <intercept-url pattern="/admin.jsp" aess="ROLE_ADMIN"/> <!--访问/资源的用户必须具有ROLE_USER的权限 --> <intercept-url pattern="/" aess="ROLE_USER"/> <session-management> <concurrency-control max-sessions="1" error-if-maximum-exceeded="false"/> </session-management> </http> <authentication-manager> <authentication-provider> <user-service> <user name="john" password="john" authorities="ROLE_USER" /> <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" /> <user name="guest" password="guest" authorities="ROLE_GUEST" /> </user-service> </authentication-provider> </authentication-manager> </b:beans>
5、在WebRoot中创建login.jsp内容如下
<body> <form action="j_spring_security_check" method="POST"> <table> <tr> <td>用户:</td> <td><input type='text'name='j_username'></td> </tr> <tr> <td>密码:</td> <td><input type='password'name='j_password'></td> </tr> <tr> <td><input name="reset"type="reset"></td> <td><input name="submit"type="submit"></td> </tr> </table> </form> </body>
6、在WebRoot中创建aessDenied.jsp,
<body> 您的访问被拒绝,无权访问该资源!<br> </body>
创建admin.jsp内容如下
<body> 欢迎来到管理员页面. <br> </body>
修改index.jsp内容如下
<body> 这是首页,欢迎<sec:authentication property="name"/>!<br> <a href="admin.jsp" rel="external nofollow" >进入admin页面</a> <a href="other.jsp" rel="external nofollow" >进入其它页面</a> </body>
好了,部署项目,并访问index.jsp.
用户名就是刚才部署的那个用户名。什么?忘了。那好吧,我再给你指出来
<user name="john" password="john" authorities="ROLE_USER" /> <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
权限不同访问的页面就不同。可以试试的
以上就是JSP 开发中Spring Security 的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程