看了看Spring Web Security3.0,感觉架构很和谐。
做个小程序验证一下。
需求
1 自定义的user,role,accessDecisionManager。
2 可以配置url和role的对应关系来做web的访问权限。
s1 在web.xml中配置要应用spring web security.这个配置指明了要应用spring security,以及spring的配置文件位置。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/security.xml</param-value>
</context-param>
<!-- listener setting-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
s2 在security.xml中加入以下片断,主要由两个目的。1是配置用自己定制的AccessDecisionManager来控制web的访问权限。2是配置用自己定制的UserDetailsService来提供用户信息。
<beans:bean class="allen.MyAccessDecisionManager"
id="myAccessDecisionManager">
</beans:bean>
<http auto-config="true"
access-decision-manager-ref="myAccessDecisionManager">
<anonymous enabled="false" />
<intercept-url pattern="/**" access="allen" />
</http>
<beans:bean class="allen.MyUserDetailsService"
id="myUserDetailsService">
</beans:bean>
<authentication-manager>
<authentication-provider
user-service-ref='myUserDetailsService' />
</authentication-manager>
s3 认证相关:自定义了UserDetails
private String userName;
private String password;
private Collection<GrantedAuthority> auths;
自定义了GrantedAuthority,里面只有一个string来表明role.
定制的MyUserDetailsService,该类实现UserDetailsService,用来提供用户信息,可以从任何地方由用户名取到该用户的信息。这里可以返回自定义的UserDetails。在security.xml里面的配置指明了当需要认证时,就可以从这里得到用户信息。
@Override
public UserDetails loadUserByUsername(String arg0)
throws UsernameNotFoundException, DataAccessException {
UserDetails details = UserCache.userCache.getUser(arg0);
return details;
}
s4 授权相关:
自定义了MyAccessDecisionManager,实现了AccessDecisionManager。在security.xml里面的配置指明了当需要授权检查时,MyAccessDecisionManager会做实际的检查工作。
在decide中,可以得到一切和授权相关的东西。如何做取决于我们想怎么做。
这里检查用户的role能不能访问当前访问的url.
@Override
public void decide(Authentication authentication, Object securityObject,
Collection<ConfigAttribute> arg2) throws AccessDeniedException,
InsufficientAuthenticationException {
if (authentication == null || !authentication.isAuthenticated())
throw new InsufficientAuthenticationException("Not Authenticated");
Object principal = authentication.getPrincipal();
MyUserDetails myUserDetails = (MyUserDetails) principal;
Collection<GrantedAuthority> userRoles = authentication
.getAuthorities();
String url = null;
if (securityObject instanceof FilterInvocation) {
FilterInvocation filter = (FilterInvocation) securityObject;
url = filter.getRequestUrl();
}
if (!URLManager.manager.canAccessUrl(url, userRoles)) {
throw new AccessDeniedException("Role check fails.");
}
}
小结:spring的web security还是很和谐的。扩展很容易。用着挺舒服。
分享到:
相关推荐
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
教你使用 SpringSecurity 3.0 一步一步教你使用SpringSecurity,从保护web应用到保护业务方法调用
SpringSecurity_3.0,此书适合于学习Java web开发的初中级程序员
英文版本,主要对spring security 3.0.x 进行了介绍, 以及如何使用spring 的 安全架构来进行 web 开发.
Web environment (Spring Security integration cannot work offline) Maven info groupId: org.thymeleaf.extras artifactId: Spring Security 3 integration package: thymeleaf-extras-springsecurity3 Spring ...
这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进 行修 正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发 者以这一版本的文档为参考。 ...
采用SpringBoot3.1、SpringSecurity6.1、Mybatis-Plus等框架,开发的一套企业级低代码开发平台,使用门槛极低,且采用MIT开源协议,完全免费开源,可免费用于商业项目等场景,采用组件模式,扩展不同的业务功能,...
吐血奉献 重要说明,由于本人用的是SpringSecurity3.1版本,3.1版本与3.0版本在配置上发生了一些变化,在配置时,本人都已经全部注明区别和使用方法。
maku-boot 是采用SpringBoot3.0、SpringSecurity6.0、Mybatis-Plus等框架,开发的一套SpringBoot低代码开发平台,使用门槛极低,且采用MIT开源协议,完全免费开源,可免费用于“ 商业项目”等场景。采用组件模式,...
使用 Spring Web MVC、Spring Security、JPA/Hibernate + MySQL、Thymeleaf、Bootstrap、Gradle 开发 Web 应用程序 如果您要使用以下技术堆栈,只需从 github 克隆这个项目并开始开发您的应用程序功能,而无需浪费...
J2EE项目开发常用Jar包源代码-src.zip aopalliance-1.0-sources.jar ...commons-digester3-3.0-sources.jar commons-fileupload-1.2.2-sources.jar ...spring-security-web-3.0.3.RELEASE-sources.jar
Spring In Action(Third Edition),介绍spring3.0,spring security2.0 and spring webflow 2.0
不建议使用Spring Security OAuth项目。 Spring Security提供了最新的OAuth 2.0支持。 有关更多详细信息,请参见《 。 关于 该项目提供了将Spring Security与OAuth(1a)和OAuth2结合使用的支持。 它提供了使用标准...
包括了完整的后台管理功能,如:用户、机构、代码、角色、功能权限,集成了springsecurity3.0来保证安全。 具体可参考上个版本的描述: http://download.csdn.net/detail/pxzsky/6659071 新版本更新内容如下: 1、...
用于Servlet 3.0环境的No-xml Spring MVC 4 Web应用程序 胸腺,引导 JPA 2.0(Hibernate / HSQLDB / Spring Data JPA) JUnit的/ Mockito的 Spring安全4.0 安装 要将原型安装在本地存储库中,请执行以下命令: git...
第5章 Spring Security 164 5.1 加强URL访问安全 165 5.1.1 问题 165 5.1.2 解决方案 165 5.1.3 工作原理 166 5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3...
Spring Web Services Spring LDAP Spring Session Spring项目快速搭建 Maven简介 Maven安装 Maven的pom.xml dependencies dependency 变量定义 编译插件 Spring项目的...
该示例是一个基于MyBatis,Spring Boot(Spring MVC,Spring Security)和Thymeleaf的Web应用程序。 这是MyBatis JPetStore示例应用程序( )的另一种实现。 原始应用程序可在MyBatis项目站点的下载部分中下载。 ...
第5章 Spring Security 164 5.1 加强URL访问安全 165 5.1.1 问题 165 5.1.2 解决方案 165 5.1.3 工作原理 166 5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3...
使用Spring Web MVC,Spring Security,JPA / Hibernate + MySQL,Thymeleaf,Bootstrap,Gradle开发Web应用程序 只需从github克隆此项目,然后开始开发应用程序功能,而不会浪费时间编写配置和库设置(如果要使用...