`
lion222
  • 浏览: 125203 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

java Spring Security 总结二 7

阅读更多

    2 自定义MethodDefinitionSource

    将方法资源存放在数据库中的实现与URL资源类似,这里不在累述,下面是 DataBaseMethodInvocationDefinitionSource的源代码,读者可以参考注释进行阅读(该类也是继承自一个自定义的抽象类AbstractMethodDefinitionSource):

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1 public ConfigAttributeDefinition lookupAttributes(Method method, Class targetClass) {
 2 
 3        // TODO Auto-generated method stub
 4 
 5        //初始化资源并缓存
 6 
 7        securityCacheManager.initResourceInCache();
 8 
 9        //获取所有方法资源
10 
11        List<String> methods = securityCacheManager.getMethodResources();
12 
13        //权限集合
14 
15        Set<GrantedAuthority> authSet = new HashSet<GrantedAuthority>();
16 
17        //遍历方法资源,并获取匹配的资源名称,然后从缓存中获取匹配正确
18 
19        //的资源对应的权限(ResourcDetail对象的GrantedAuthority[]对象数据)
20 
21        for (String resourceName_method : methods) {
22 
23            if (isMatch(targetClass, method, resourceName_method)) {
24 
25               ResourcDetail detail = securityCacheManager.getResourcDetailFromCache(resourceName_method);
26 
27               if (detail == null) {
28 
29                   break;
30 
31               }
32 
33               GrantedAuthority[] authorities = detail.getAuthorities();
34 
35               if (authorities == null || authorities.length == 0) {
36 
37                   break;
38 
39               }
40 
41               authSet.addAll(Arrays.asList(authorities));
42 
43            }
44 
45        }
46 
47        if (authSet.size() > 0) {
48 
49            String authString = "";
50 
51            for (GrantedAuthority grantedAuthority : authSet) {
52 
53               authString += grantedAuthority.getAuthority() + ",";
54 
55            }
56 
57            String authority = authString.substring(0, (authString.length() - 1));
58 
59            System.out.println(">>>>>>>>>>>>>>>" + authority);
60 
61            ConfigAttributeEditor attributeEditor = new ConfigAttributeEditor();
62 
63            attributeEditor.setAsText(authority.trim());
64 
65            return (ConfigAttributeDefinition)attributeEditor.getValue();
66 
67        }
68 
69        returnnull;
70 
71 }

    isMatch方法用于对用户当前调用的方法与受保护的方法进行匹配,与URL资源类似,请参考代码。下面是applicationContext-security.xml文件中的配置,请查看该配置文件。

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1 <bean id="methodDefinitionSource"
2     class="org.security.intercept.method.DataBaseMethodInvocationDefinitionSource"
3     p:securityCacheManager-ref="securityCacheManager"/>

    securityCacheManager属性定义了指向另一个Bean的引用,我们使用它从缓存中获取相应的信息。这个Bean和前一节中介绍的一样。只是这里我们获取的是方法保护定义资源。

    本文到此也结束了,还请各位多指教。

分享到:
评论

相关推荐

    基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip

    基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip ...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、授权和访问控制功能。在本文中,我们将深入探讨SpringSecurity的核心概念、关键组件以及如何配置和使用这个框架。 首先,Spring...

    Spring Security in Action

    Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户身份的验证,以确保用户的...

    spring security 4.0.0所需jar包

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛用于Java应用程序的安全性管理。这个压缩包包含了Spring Security 4.0.0版本所需的jar包,这是一组核心组件,为构建安全的Web应用提供了...

    Spring Security 资料合集

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...

    SpringSecurity.pdf

    Spring Security之所以在Java社区中广泛流行,是因为它不仅提供了强大的安全特性,还具有高可定制性、良好的扩展性和兼容性,使得开发者可以根据具体需求选择合适的安全解决方案。而随着Web应用程序的安全要求越来越...

    springsecurity学习笔记

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

    spring security 完整项目实例

    Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    而Spring Security 则是 Java 开发中广泛使用的安全框架,用于实现认证和授权。当我们将这两者结合时,我们可以创建一个强大的统一登录认证鉴权系统。 首先,让我们深入了解Spring Cloud Gateway。这是一个基于...

    Spring Security 学习总结1_3

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

    java学习之SpringSecurity配置了登录链接无权限

    我们在使用SpringSecurity作为后台权限框架的时候,框架给我们提供了配置登录请求的接口,供我们配置登录链接,当我们配置了登录链接地址后,前端访问登陆请求的时候显示无权限。 异常分析 由于SpringSecurity的...

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

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在3.0版本中,Spring Security 已经相当成熟,提供...

    spring security 官方文档

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

    Spring Security3 安全 个人总结

    Spring Security3 是一个基于 Java 的安全框架,提供了一个灵活的安全机制来保护基于 Spring 的应用程序。在这个总结中,我们将详细介绍 Spring Security3 的安全机制、原理和核心组件。 认证管理器 认证管理器是...

    SpringSecurity笔记,编程不良人笔记

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...

    spring security3 中文版本

    #### 二、Spring Security 命名空间配置 ##### 2.1 命名空间的设计 Spring Security 提供了一个简洁的命名空间,用于简化配置过程。这种设计使得开发者可以使用更少的 XML 配置来实现复杂的安全需求。 ##### 2.2 ...

    spring_security_3.1

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

    spring security 学习总结文档

    **二、为什么使用 Spring Security** 1. **应对安全威胁** - 防止病毒、恶意攻击,保护用户信息,防止网站崩溃和数据丢失。 - 通过细分用户类别,赋予不同级别的权限,确保资源的访问控制。 - 阻止常见的攻击...

    spring-security 官方文档 中文版

    - Spring Security 支持多种 Java EE 环境,包括 Servlet 2.5、Java EE 5 和 Java EE 6。 **5.2 核心组件** - **SecurityContextHolder, SecurityContext 和 Authentication 对象**: - **获得当前用户的信息**:...

Global site tag (gtag.js) - Google Analytics