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 ...
SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、授权和访问控制功能。在本文中,我们将深入探讨SpringSecurity的核心概念、关键组件以及如何配置和使用这个框架。 首先,Spring...
Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户身份的验证,以确保用户的...
Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛用于Java应用程序的安全性管理。这个压缩包包含了Spring Security 4.0.0版本所需的jar包,这是一组核心组件,为构建安全的Web应用提供了...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...
Spring Security之所以在Java社区中广泛流行,是因为它不仅提供了强大的安全特性,还具有高可定制性、良好的扩展性和兼容性,使得开发者可以根据具体需求选择合适的安全解决方案。而随着Web应用程序的安全要求越来越...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...
而Spring Security 则是 Java 开发中广泛使用的安全框架,用于实现认证和授权。当我们将这两者结合时,我们可以创建一个强大的统一登录认证鉴权系统。 首先,让我们深入了解Spring Cloud Gateway。这是一个基于...
"springsecurity-namespace"可能指的是Spring Security的XML命名空间配置。在Spring Security的早期版本中,使用XML配置是最常见的实践。例如,你可能会看到以下片段: ```xml **" access="hasRole('ROLE_ADMIN')...
我们在使用SpringSecurity作为后台权限框架的时候,框架给我们提供了配置登录请求的接口,供我们配置登录链接,当我们配置了登录链接地址后,前端访问登陆请求的时候显示无权限。 异常分析 由于SpringSecurity的...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在3.0版本中,Spring Security 已经相当成熟,提供...
7. **API安全**:Spring Security还支持RESTful API的安全,可以为JSON Web Tokens (JWT) 提供生成和验证,以及OAuth2和OpenID Connect集成。 8. **国际化(Internationalization)**:框架支持多语言错误消息,...
Spring Security3 是一个基于 Java 的安全框架,提供了一个灵活的安全机制来保护基于 Spring 的应用程序。在这个总结中,我们将详细介绍 Spring Security3 的安全机制、原理和核心组件。 认证管理器 认证管理器是...
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...
#### 二、Spring Security 命名空间配置 ##### 2.1 命名空间的设计 Spring Security 提供了一个简洁的命名空间,用于简化配置过程。这种设计使得开发者可以使用更少的 XML 配置来实现复杂的安全需求。 ##### 2.2 ...
7. **集成Spring MVC**:Spring Security 3.1与Spring MVC无缝集成,可以方便地保护Web控制器和视图。通过注解,如`@Secured`和`@PreAuthorize`,可以在方法级别声明安全约束。 8. **自定义逻辑**:Spring Security...
**二、为什么使用 Spring Security** 1. **应对安全威胁** - 防止病毒、恶意攻击,保护用户信息,防止网站崩溃和数据丢失。 - 通过细分用户类别,赋予不同级别的权限,确保资源的访问控制。 - 阻止常见的攻击...
- Spring Security 支持多种 Java EE 环境,包括 Servlet 2.5、Java EE 5 和 Java EE 6。 **5.2 核心组件** - **SecurityContextHolder, SecurityContext 和 Authentication 对象**: - **获得当前用户的信息**:...