`
qq543123909
  • 浏览: 25859 次
社区版块
存档分类
最新评论

Spring Security 学习(7)

阅读更多

这篇是第七篇 (过渡篇)

主要的内容:

 整改下项目 spring_security 的结构. 修正下以前项目遗留的Bug 也为下篇的内容 做好准备工作:

 

1,给项目添加Hibernate 的支持 .

可以右键点击项目 ——选择MyEclipse ——add Hibernate Capabilities 

 

 

这里点击下一步 .



 

 



 

 


 

以前配置过数据源 所以 这次的名字 换一个 生成后的dd 数据源配置dd删除掉.

 


 

这里不需要生成 SessionFactoryClass 点击finish 后 项目会报错 是因为缺少spring -orm -xx.jar 

 

2.选择项目右键 —— Bulid path—— Add Lib,,——MyEclipse Lib,,——Spring 3.0 Persistence Core lib。。点击 Finish 

成功后 选择 打开 可以看到":


 

3, 我们可以看到 上面 有的spring-jdbc-3.0.5.jar  是第三篇中说要导入的spring-jdbc-2.5.6.jar 的版本不一致 

现在必须要删除自己以前导入的jar(spring-jdbc-2.5.6.jar)

 

4.分离applicationContext.xml

现在的applicationContext.xml 看上去很乱 ,配置的 东西也挺乱的.

将它 分成 applicationContext.xml 和 applicationContext-security.xml

 

4.1 applicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<context:annotation-config />
	<context:component-scan base-package="zyk" />

	<!-- 数据库连接池 (DBCP) -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@192.168.1.103:1521:ORCL" />
		<property name="username" value="pids" />
		<property name="password" value="pids" />
	</bean>

	<!-- 配置SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
             <!-- 因为要使用 Annotation 所以上面SessionFactory的类 要换成 AnnotationSessionFactoryBean-->
		<property name="dataSource">
			<ref bean="dataSource"/>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.Oracle9Dialect
				</prop>
				<!-- 设置二级缓存 -->
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
				<prop key="hibernate.cache.use_second_level_cache">true</prop>
				<!-- <prop key="hibernate.use_sql_comments">true </prop> -->
				<!-- <prop key="hibernate.cache.use_query_cache">true</prop> -->
			</props>
		</property>
		<property name="annotatedClasses">
			<list>
				<value>zyk.entity.User</value>
				<value>zyk.entity.Role</value>
			</list>
		</property>
		<!-- <property name="packagesToScan"> -->
		<!-- <list> -->
		<!-- <value>zyk.entity.*</value> -->
		<!-- </list> -->
		<!-- </property> -->
	</bean>

<!-- 	<bean id="helloService" class="zyk.service.impl.HelloServiceImpl" /> -->

<!-- 	<bean id="userDetailsService" class="zyk.security.MyUserDetailsService"> -->
<!-- 		<property name="sessionFactory" ref="sessionFactory" /> -->
<!-- 	</bean> -->

</beans>

这是它主要配置公用的 配置在里面 例如 dataSource和 sessionFactory

对于 二级缓存可也参考: http://www.iteye.com/topic/18904

 

 

 4.2 applicationContext-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:security="http://www.springframework.org/schema/security"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

	<!-- 启用annotation -->
	<!-- <security:global-method-security -->
	<!-- secured-annotations="enabled" jsr250-annotations="enabled" /> -->

	<!-- XML 的方式 -->
	<security:global-method-security>
		<!-- 拥有ROLE_USER或者ROLE_ADMIN 权限的用户 可以访问 包 zyk.service 下的任意个类 里 返回值类型为任意类型 
			并 方法名为sayHi 的方法 -->
		<security:protect-pointcut access="ROLE_USER,ROLE_ADMIN"
			expression="execution(* zyk.service.*.sayHi(..))" />
		<!-- 第一个* :表示返回任意类型 第二个 * :表示任意的类 第三个* : 以say开头的任意方法 名 对应的是 : 拥有ROLE_ADMIN 
			权限的用户 可以访问 包 zyk.service 下的任意个类 里 返回值类型为任意类型 并以say开头的方法 (例如 sayHi 和 sayBye) -->
		<security:protect-pointcut access="ROLE_ADMIN"
			expression="execution(* zyk.service.*.say*(..))" />
	</security:global-method-security>

	<security:http auto-config="true" access-denied-page="/accessDenied.jsp">
		<!-- login-page 指定登录页面 -->
		<security:form-login login-page="/login.jsp" />

		<!-- 对于登录页面不进行拦截 至于后面的* 在访问loing.jsp时可能会传入一些参数 -->
		<security:intercept-url pattern="/login.jsp*"
			filters="none" />
		<security:intercept-url pattern="/admin.jsp*"
			access="ROLE_ADMIN" />
		<security:intercept-url pattern="/**"
			access="ROLE_USER,ROLE_ADMIN" />
		<security:session-management
			invalid-session-url="/sessionTimeout.html">
			<security:concurrency-control
				max-sessions="1" error-if-maximum-exceeded="true" />
		</security:session-management>
	</security:http>

	<!--配置认证管理器 -->
	<security:authentication-manager>
		<security:authentication-provider
			user-service-ref="userDetailsService">
			<security:password-encoder hash="md5" />

			<!-- <security:jdbc-user-service -->
			<!-- data-source-ref="dataSource" -->
			<!-- users-by-username-query="select u.c_username username,u.c_password -->
			<!-- password,u.c_enabled enabled -->
			<!-- from tb_users u where u.c_username=?" -->
			<!-- authorities-by-username-query="select u.c_username -->
			<!-- username,r.c_authority -->
			<!-- authority -->
			<!-- from tb_users u , tb_role r ,tb_user_role ur -->
			<!-- where u.id=ur.c_user_id and r.id=ur.c_role_id and u.c_username=?" /> -->


			<!-- <security:user-service> -->
			<!-- <security:user name="user" password="ee11cbb19052e40b07aac0ca060c23ee" -->
			<!-- authorities="ROLE_USER" /> -->
			<!-- </security:user-service> -->
		</security:authentication-provider>
	</security:authentication-manager>


	<!-- 这里定义的messageSource对象 是 spring Security框架内部使用消息类。 -->
	<bean id="messageSource"
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:message_zh_CN" />
	</bean>


</beans>
 

 而它却更专注的配置 Spring Security  配置信息

 

 

5.web.xml 

修改contextConfigLocation 使得上面的分离的文件能够组织在一起,.

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
		classpath:applicationContext.xml
		classpath:applicationContext-security.xml
		</param-value>
	</context-param>

 

最后整个项目的目录看上去是这样的:


 

 

 

 

  • 大小: 84.8 KB
  • 大小: 57.9 KB
  • 大小: 65.2 KB
  • 大小: 73.3 KB
  • 大小: 47.9 KB
  • 大小: 17.5 KB
  • 大小: 59.4 KB
0
0
分享到:
评论

相关推荐

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    最详细Spring Security学习资料(源码)

    Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

    spring security学习资料

    spring security方面的学习资料,包含:Spring+Security+3+与+CAS单点登录配置;Spring+Security3中文教程;Spring-Security安全权限管理手册;Spring+Security文库;还有一个学习笔记!

    Spring Security 资料合集

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的...通过学习这些文档,开发者可以更好地理解Spring Security的工作原理,从而更有效地实现应用的安全控制。

    SpringSecurity.pdf

    Spring Security的学习过程可以分为入门、进阶和高级三个阶段。入门阶段主要是了解Spring Security的基本概念和配置方法。进阶阶段需要深入学习如何定制认证和授权流程、如何集成各种认证方式以及如何在实际项目中...

    Spring Security 学习总结1_3

    "springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...

    SpringSecurity学习

    首先,Spring_Security-3.0.1_中文官方文档(翻译版).pdf是学习SpringSecurity的重要资源,它包含详细的框架介绍、配置指南和使用示例。这份文档会帮助我们理解SpringSecurity的基础架构,如安全上下文、过滤器链和...

    spring security 完整项目实例

    Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中...通过学习和实践这个项目,开发者能够深入理解Spring Security的工作原理,从而更有效地保护自己的Java应用。

    SpringSecurity笔记,编程不良人笔记

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话...通过深入学习和实践,我们可以更好地掌握SpringSecurity,为我们的应用构建坚固的安全防线。

    Spring Security-3中文官方文档(及教程)

    7. **OAuth2整合**:Spring Security可以与OAuth2框架集成,支持第三方身份验证服务,如Google、Facebook等,实现社交登录功能。 8. **Web安全**:文档涵盖了HTTP基本认证、表单登录、HTTP方法转换、XSS防护、点击...

    spring security 官方文档

    7. **API安全**:Spring Security还支持RESTful API的安全,可以为JSON Web Tokens (JWT) 提供生成和验证,以及OAuth2和OpenID Connect集成。 8. **国际化(Internationalization)**:框架支持多语言错误消息,...

    Shiro+Spring Security学习文档

    在IT安全领域,Apache Shiro和Spring Security是两个非常重要的框架,它们主要用于应用程序的安全管理,包括身份验证、授权、会话管理和加密等。本学习文档集合了这两个框架的相关知识,旨在帮助开发者深入理解和...

    spring security 4.0.0所需jar包

    - `spring-security-core-4.0.0.CI-SNAPSHOT-sources.jar`:提供源代码,便于深入学习和调试。 - `spring-security-core-4.0.0.CI-SNAPSHOT.jar`:核心模块的主要库,包括安全性元数据、认证、授权和访问决策管理...

    spring security 3.1学习资料 及 附件下载

    《Spring Security 3.1 学习指南及资源解析》 Spring Security是Java平台上的一款强大且高度可定制的安全框架,广泛应用于企业级Web应用的安全管理。本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心...

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

    spring security 学习总结文档

    【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...

    spring_security_3.1

    7. **集成Spring MVC**:Spring Security 3.1与Spring MVC无缝集成,可以方便地保护Web控制器和视图。通过注解,如`@Secured`和`@PreAuthorize`,可以在方法级别声明安全约束。 8. **自定义逻辑**:Spring Security...

Global site tag (gtag.js) - Google Analytics