`
cpf1985
  • 浏览: 78313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springsecurity3.0

阅读更多
最近不忙了,将自己做过的一些东西写到博客上以防忘记
网站的权限管理部分采用了springsecurity3
第一步在pom.xml中加入以下代码
<!-- spring security -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-core</artifactId>
			<version>3.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-config</artifactId>
			<version>3.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-taglibs</artifactId>
			<version>3.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>com.google.collections</groupId>
			<artifactId>google-collections</artifactId>
			<version>1.0</version>
		</dependency>


第二步:新建applicationContext-security.xml进行开发前的一些配置
  <?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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" default-autowire="byName">

    <http auto-config="true"    access-denied-page="/accessDenied.jsp" ><!-- 当访问被拒绝时,会转到403.jsp -->
        <intercept-url pattern="" filters="none" />
		<intercept-url pattern="/logout/logout.action" filters="none" />	 
        <intercept-url pattern="/login.jsp" filters="none" />
     	<intercept-url pattern="/css/**" filters="none" />
		<intercept-url pattern="/images/**" filters="none" />
		<intercept-url pattern="/layout/**" filters="none" />
		<intercept-url pattern="/js/**" filters="none" />
        <intercept-url pattern="/style/**" filters="none" />
        <intercept-url pattern="/baike_editor/**" filters="none" />
        <intercept-url pattern="/commen/**" filters="none" />
        <intercept-url pattern="/datepicker/**" filters="none" />
       
        <form-login login-page="/login.jsp"
            authentication-failure-url="/login.jsp?error=true"
            default-target-url="/index.jsp" />
        <logout logout-success-url="/login.jsp" />
        <http-basic />
        <!-- 增加一个filter,这点与Acegi是不一样的,不能修改默认的filter了,这个filter位于FILTER_SECURITY_INTERCEPTOR之前 -->
          <custom-filter before="FILTER_SECURITY_INTERCEPTOR" ref="myFilter" />
         <custom-filter after="PRE_AUTH_FILTER"  ref="mycookiesfilter"/>
    </http>

    <!-- 一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,
               我们的所有控制将在这三个类中实现,解释详见具体配置 -->
    <beans:bean id="myFilter" class="com.specl.mis.login.filter.MyFilterSecurityInterceptor">
      
    </beans:bean>
    
    <!-- 认证管理器,实现用户认证的入口,主要实现UserDetailsService接口即可 -->
    <authentication-manager alias="authenticationManager">
        <authentication-provider user-service-ref="myUserDetailService">
<!--密码采用MD5加密 当然security也提供了盐值加密-->
                <password-encoder hash="md5" />
        </authentication-provider>
    </authentication-manager>
    <beans:bean id="myUserDetailService"
        class="********" >
    </beans:bean>

    <!-- 访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 -->
    <beans:bean id="accessDecisionManager"
        class="*****">
    </beans:bean>
    
    <!-- 资源源数据定义,即定义某一资源可以被哪些角色访问 -->
    <beans:bean id="securityMetadataSource"
        class="*****" />
    
	<!--自定义username password  过滤器-->

		<beans:bean id="authenticationProcessingFilter"
		class="******">
	   </beans:bean> 
	
  
<!--增加自定义的cookies过滤器-->
	<beans:bean id="mycookiesfilter"
		class="*******">		
	</beans:bean>

</beans:beans>


下面分析springsecurity的执行原理
从登陆开始
1、登陆--->2、根据用户名查询(注意只是根据用户名查询)--->3、验证密码(假设密码对)-->4、获取你要访问的url---->5、查找访问此url资源需要的权限------>6、用当前登录用户拥有的权限去和访问url资源需要的权限对比------>7、当前用户有该权限(登陆成功)否则登陆失败
ok有了这个思路后我们就开始将此汉语转成java
登陆
学过springsecurity的都知道该怎么写 很简单
   <form id="form1" name="form1" method="post" action="${pageContext.request.contextPath}/j_spring_security_check">
					<ul class="login_label input_bg1">
											
						<li><label>登录名:</label><input type='text' id='j_username' name='j_username'  class="required" /></li>
						<li><label>密码:</label><input type='password' id='j_password' name='j_password'  class="required" /></li>
						<li><label>验证码:</label><input type="text" name="j_code"  class="required put1"  id="imagecode" autocomplete="off"/span id="code"></span></li>
					</ul>
					<p class="align3a"><span class="input_bg2"><input type="submit" name="button" id="button" value="登 录" /></span></p>
					</form>





注意用户名和密码的name是固定的分别为j_username和但是验证码怎么加呢?一般的网站登陆可都是需要验证码的这个问题先留着
ok表单写好了 该提交登陆了
按照上面的流程应该到---按用户名进行查询
注意这个查询不是你想写到哪就写到哪的 我们必须写一个类该类需要实现UserDetailsServiceImpl接口
   public UserDetails loadUserByUsername(String loginname)	throws UsernameNotFoundException, DataAccessException {
			}


该方法里面loginname就是你填写的登录名该参数不需要你传值,此方法返回一个对象UserDetails该对象是springSecurity提供的一个抽象类需要我们继承
   public class MyUserDetails extends Operator implements UserDetails, Serializable {
      public Collection<GrantedAuthority> getAuthorities() {
						}
		return null;
	}
}


这个类干什么的呢 ?
注意在这个类中有一个方法getAuthorities此方法中我们需要获取登录用户拥有的权限然后一个集合


今天先写到这
分享到:
评论

相关推荐

    spring security3.0所需要的最精简的jar包

    在3.0版本中,Spring Security 已经相当成熟,提供了丰富的特性来保障应用的安全性。 在开始使用Spring Security时,了解并正确引入必要的jar包是至关重要的。以下是你提供的压缩包文件中的关键组件: 1. **spring...

    spring security3.0帮助文档

    ### Spring Security 3.0权限控制详解 Spring Security是Spring框架的一个强大且高度可定制的安全模块,用于保护基于Web和非Web的应用程序。版本3.0的发布带来了许多改进和新特性,使其成为处理安全需求的首选解决...

    SpringSecurity3.0.x官方参考文档(英文+中文双解版)

    **Spring Security 3.0.x 知识点详解** Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛应用于Java企业级应用的安全管理。Spring Security 3.0.x 版本是该框架的一个重要里程碑,它提供了...

    SpringSecurity3.0 教程

    SpringSecurity3.0是Spring框架的一个重要扩展,主要用于企业级应用的安全管理,提供了一套全面的访问控制和安全解决方案。本教程将深入探讨SpringSecurity3.0的核心概念、配置及其实现方式,帮助开发者理解并掌握...

    spring security3.0 demo

    这个“spring security3.0 demo”很可能是为了展示如何在实际应用中配置和使用Spring Security。 首先,Spring Security的核心概念包括: 1. **Filter Security Interceptor (FSI)**:这是Spring Security的主要...

    SpringSecurity3.0 Demo

    在本项目"SpringSecurity3.0 Demo"中,我们将深入探讨SpringSecurity 3.0版本的功能和用法。 首先,SpringSecurity的核心功能包括用户认证(Authentication)和权限授权(Authorization)。在3.0版本中,它引入了更...

    springMVC+springSecurity3.0+maven

    标题 "springMVC+springSecurity3.0+maven" 指的是一个集成项目,它结合了Spring MVC、Spring Security 3.0和Maven这三个关键的Java开发工具和技术。让我们逐一深入理解这些技术及其相互之间的关系。 首先,Spring ...

    spring security3.0所有最新开发包及源码及文档

    在Spring Security 3.0版本中,这个框架进行了大量的改进和增强,以适应不断变化的安全需求。 Spring Security的核心概念包括: 1. **过滤器链**:这是Spring Security的主要执行机制,它通过一系列自定义的过滤器...

    Spring Security 3.0 权限管理

    Spring Security 3.0 是一个强大的安全框架,用于在Java应用程序中实现全面的安全管理解决方案。它专注于提供身份验证、授权和访问控制功能,确保只有经过验证的用户才能访问受保护的资源。本教程将深入探讨Spring ...

    教你使用 SpringSecurity 3.0

    教你使用 SpringSecurity 3.0 一步一步教你使用SpringSecurity,从保护web应用到保护业务方法调用

    SpringSecurity 3.0基础配置实例+Mysql数据库文件+Jar包

    SpringSecurity3.0相对比较稳定。本实例包含SpringSecurity3.0的基本配置,包含所需的Jar包和mysql数据库文件,直接导入myeclipes中并导入数据库即可运行,配置文件简单易懂,适合SpringSecurity初学者配置入门。...

    spring security 3.0入门教程PDF

    Spring Security 3.0是该框架的一个重要版本,提供了许多安全控制功能,用于保护Web应用程序不受到黑客的攻击。 ### Spring Security 3.0入门知识点: 1. **Spring Security概述**: Spring Security是一个提供...

    spring security 3.0x remember-me 免登陆

    在Spring Security 3.0x中,配置"remember-me"服务主要包括以下几个步骤: 1. **依赖配置**:首先,确保你的项目依赖于Spring Security 3.0.x版本。在你的pom.xml或build.gradle文件中添加相应的依赖。 2. **配置...

    Spring Security 3.0 安全权限管理手册

    &lt;html xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"&gt; &lt;h1&gt;Welcome, &lt;sec:authentication property="principal.username"/&gt;&lt;/h1&gt; ``` ##### 4. 实现方法级安全 在方法级别添加安全...

    springSecurity3.0

    在本示例中,我们关注的是Spring Security 3.0版本,它在Spring MVC、Spring JDBC和AOP(面向切面编程)事务管理的基础上构建了一个安全框架。这个框架为Web应用程序提供了全面的安全解决方案,包括用户认证、授权、...

    struts2+springsecurity3.0例子

    简单springsecurity3.0的例子 做了详细注释,另外集成了tiles 和conversion插件,希望对你有帮助,里面有不对的地方请给我留言,我加你QQ一起讨论..注:我是通过maven管理的,如果你不是的话可能无法运行起来,只能看代码

    spring security3.0 源码

    spring-security-web-3.0 spring-security-taglibs-3.0 spring-security-openid-3.0 spring-security-core-3.0 spring-security-config-3.0 spring-security-aspects-3.0 spring-security-acl-3.0

    Spring-Security3.0自定义表结构

    ### Spring Security 3.0 自定义表结构详解 在企业级应用开发中,Spring Security作为Spring框架的一个子项目,提供了一套完整的权限管理和安全性解决方案。它不仅能够处理身份验证(authentication)和授权...

Global site tag (gtag.js) - Google Analytics