`
hanwesley
  • 浏览: 58950 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring security 实战应用

 
阅读更多

权限管理:
 角色
 用户
 资源
 某个用户拥有多个角色,一个角色也可以被多个用户拥有
 一个角色对应访问多个资源,一个资源也可以被多个角色访问

spring security的具体应用如下。
版本:3.0.5

1)web.xml配置
 <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:com/applicationContext.xml</param-value>
 </context-param>

 <filter>
   <filter-name>springSecurityFilterChain</filter-name>
   <filter-class>
    org.springframework.web.filter.DelegatingFilterProxy
   </filter-class>
 </filter>

 <filter>
   <filter-name>httpSessionContextIntegrationFilter</filter-name>
   <filter-class>
    org.springframework.security.web.context.HttpSessionContextIntegrationFilter
   </filter-class>
 </filter>
 
 <filter-mapping>
   <filter-name>springSecurityFilterChain</filter-name>
   <url-pattern>/*</url-pattern>
   <dispatcher>REQUEST</dispatcher>
   <dispatcher>INCLUDE</dispatcher>
   <dispatcher>FORWARD</dispatcher>
 </filter-mapping>
 <listener>
   <listener-class>
    org.springframework.web.context.ContextLoaderListener
   </listener-class>
 </listener>
 <listener>
   <listener-class>
  org.springframework.web.context.request.RequestContextListener
   </listener-class>
 </listener>

2)页面改造
 如果要加验证码功能,可以在此fileter前加验证
 <form action="${pageContext.request.contextPath}/j_spring_security_check" name="logonActionForm" method="post">
  <input type="text" name="j_username" value=""/>
  <input type="password" name="j_password" value="" />
 </form>
 
3)spring security 配置

 <http auto-config="true" >
   <intercept-url pattern="/logon.jsp" filters="none" />
   <intercept-url pattern="/logonAction.do" filters="none" />
   <intercept-url pattern="/public/logoutSuccess.jsp" filters="none"/>
   <intercept-url pattern="/public/**"/>
   <intercept-url pattern="/js/**" filters="none" /> 
      <intercept-url pattern="/css/**" filters="none" /> 
      <intercept-url pattern="/images/**" filters="none" />
      <intercept-url pattern="/theme/**" filters="none" />
   <intercept-url pattern="/**" access="ROLE_AA,ROLE_BB,ROLE_BROWSER"  requires-channel="any" />
  <form-login login-page="${url.login}" 
           default-target-url="/logonAction.do" 
           authentication-failure-url="${url.login}"
           login-processing-url="/j_spring_security_check"
        />
  <logout invalidate-session="true" logout-url="${url.logoutUrl}" logout-success-url="${url.logoutSuccess}" />

  <anonymous />
 <session-management invalid-session-url="${url.logoutUrl}" />
 </http>

 <beans:bean id="userCheckServiceImpl" class="com.sample.UserCheckServiceImpl">
 
 <authentication-manager> 
  <!--编程方式获得用户权限-->
  <authentication-provider user-service-ref='userCheckServiceImpl'/>
  <!--固定用户名密码方式-->
  <authentication-provider>
  <password-encoder hash="md5">
   <salt-source user-property="username"/>
  </password-encoder>  
  <user-service>
   <user name="aatest" password="aatest" authorities="ROLE_AA" />
   <user name="admin" password="admin" authorities="ROLE_BROWSER,ROLE_BB,ROLE_AA" />
  </user-service> 
  </authentication-provider>
</authentication-manager> 

 <global-method-security>
 <protect-pointcut expression="execution(* com.sample.exec(..))" access="ROLE_PA" />
 <protect-pointcut expression="execution(* com.sample.read(..))" access="ROLE_CA,ROLE_PA,ROLE_BROWSER" />
 </global-method-security>

//编程方式校验用户
public class UserCheckServiceImpl implements UserDetailsService {
  public UserDetails loadUserByUsername(String userName)
    throws UsernameNotFoundException, DataAccessException {
   //MockDao
   if(!userName.equals("aatest")){
   return null;
   }
   List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
   authorities.add(new GrantedAuthorityImpl("ROLE_AA"));
   UserDetails userDetails = new User("aatest", "aatest", true, true,
  true, true, authorities);
   return userDetails;
  }
}

//验证后得到用户信息
 SecurityContext ctx =SecurityContextHolder.getContext();
  ctx  = (SecurityContext) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
  Authentication auth = ctx.getAuthentication();
  Object principal = auth.getPrincipal();
  UserDetails user = null;
  if(principal instanceof UserDetails){
   user = (UserDetails)principal;
  }

分享到:
评论

相关推荐

    Spring Security实战例子

    通过这个Spring Security实战例子,你可以深入了解Spring Security的配置、认证和授权机制,以及如何与数据库集成。实践是最好的老师,动手完成这四个小项目将有助于巩固理解,并为你在实际项目中应用Spring ...

    SpringSecurity实战代码

    通过这个实战项目,你可以加深对SpringSecurity工作原理的理解,同时掌握如何在SpringBoot应用中有效地实施安全控制。实践中遇到问题时,可以查阅SpringSecurity官方文档、相关教程或者在线社区寻找答案。祝你学习...

    Spring Security 资料合集

    这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...

    spring security 官方文档

    Spring Security 是一个强大的安全框架,用于为Java应用提供全面的安全管理解决方案。它是Spring生态系统的组成部分,专注于身份验证、授权和访问控制。Spring Security的核心特性包括: 1. **身份验证...

    精彩:Spring Security 演讲PPT

    ### Spring Security 概述与应用实践 #### 一、引言 在当今互联网时代,网络安全问题日益凸显,尤其是Web应用程序的安全性受到了前所未有的关注。为了应对这些挑战,Spring Security 应运而生,成为了一个非常重要...

    SpringSecurity实战教程.txt

    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,...

    SpringSecurity中文文档.zip

    综上所述,这两份SpringSecurity的中文文档是学习和掌握SpringSecurity的宝贵资料,它们将覆盖从基础概念到高级特性的全方位讲解,无论是初学者还是经验丰富的开发者,都能从中受益。通过深入学习和实践,开发者能够...

    Spring Security 教程(Spring Security Tutorial)1

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本教程将逐步引导你理解并使用 Spring Security 进行安全控制。以下是对关键知识点的详细说明: 1. **Spring ...

    java+spring-boot-jwt + spring security集成实战项目.zip

    在本项目中,我们主要探讨的是如何将Java与Spring Boot框架相结合,利用JWT(JSON Web Token)和Spring Security来构建一个安全的Web应用程序。这个实战项目涵盖了从基础概念到实际应用的完整流程,旨在帮助开发者...

    Spring Security+OAuth2 精讲,打造企业级认证与授权

    学习这门课程,开发者将不仅理解Spring Security和OAuth2的基本原理,还能掌握如何在实际项目中灵活运用,从而提高企业级应用的安全性和可靠性。对于任何希望提升安全技能的Java开发者来说,这是一份不可多得的学习...

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

    阅读这份文档,可以了解到Spring Security的架构设计、配置方法以及实战案例。而"Spring Security 3.1.zip"文件可能包含了示例代码或额外的教程资源,用于辅助学习和实践。 总结,Spring Security 3.1作为一款强大...

    狂神spring-security静态资源.zip

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护Java应用程序。这个"狂神spring-security静态资源.zip"文件很可能包含了Spring Security的相关教程、代码示例或配置文件,帮助用户理解...

    Spring Security 3.1 随书源代码

    Spring Security 是一个强大的Java安全框架,它为Spring应用程序提供了全面的安全解决方案。该框架的主要目标是保护Web应用程序,包括身份验证、授权以及会话管理。在"Spring Security 3.1 随书源代码"中,我们可以...

    Spring Security 3 中文 chm

    Spring Security 是一个强大的Java安全框架,用于保护基于Spring的应用程序。在Spring Security 3版本中,这个框架提供了全面的身份验证、授权和访问控制机制,帮助开发者构建安全的Web应用程序。本资源包含Spring ...

    Spring Security3.1实践

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架,广泛应用于Java企业级应用中。在Spring Security 3.1版本中,它提供了一套全面的安全解决方案,涵盖了从用户认证到权限控制等多个层面。本文将...

    spring security maven 例子

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web和企业级应用程序提供了全面的身份验证、授权和访问控制功能。在这个“Spring Security Maven 示例”中,我们可以通过官方提供的Maven...

    简单的springsecurity实战,非常适合springsecurity入门级别的老铁学习,这个小demo采用的.zip

    通过这个简单的 Spring Security 实战项目,新手可以快速了解如何在实际应用中配置和使用 Spring Security,逐步掌握安全框架的核心概念。随着经验的积累,你可以进一步研究更高级的主题,如 OAuth2、CSRF 防护、XSS...

    Spring Security 2 中文参考文档(chm)

    **Spring Security 2 中文参考文档** Spring Security是一款强大的安全框架,主要用于Java应用...无论你是初学者还是经验丰富的开发人员,都可以从中获得宝贵的指导,以确保你的应用程序具备坚实的 security 基础。

    《Spring Security 3》中文版 张卫滨译

    Spring Security是Spring生态系统中的核心组件之一,它提供了一套全面的安全管理框架,用于保护Web应用和企业级服务的安全性。这本书详细阐述了Spring Security的功能、设计原则以及实际应用。 首先,Spring ...

Global site tag (gtag.js) - Google Analytics