最近不忙了,将自己做过的一些东西写到博客上以防忘记
网站的权限管理部分采用了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此方法中我们需要获取登录用户拥有的权限然后一个集合
今天先写到这
分享到:
相关推荐
在3.0版本中,Spring Security 已经相当成熟,提供了丰富的特性来保障应用的安全性。 在开始使用Spring Security时,了解并正确引入必要的jar包是至关重要的。以下是你提供的压缩包文件中的关键组件: 1. **spring...
### Spring Security 3.0权限控制详解 Spring Security是Spring框架的一个强大且高度可定制的安全模块,用于保护基于Web和非Web的应用程序。版本3.0的发布带来了许多改进和新特性,使其成为处理安全需求的首选解决...
**Spring Security 3.0.x 知识点详解** Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛应用于Java企业级应用的安全管理。Spring Security 3.0.x 版本是该框架的一个重要里程碑,它提供了...
SpringSecurity3.0是Spring框架的一个重要扩展,主要用于企业级应用的安全管理,提供了一套全面的访问控制和安全解决方案。本教程将深入探讨SpringSecurity3.0的核心概念、配置及其实现方式,帮助开发者理解并掌握...
这个“spring security3.0 demo”很可能是为了展示如何在实际应用中配置和使用Spring Security。 首先,Spring Security的核心概念包括: 1. **Filter Security Interceptor (FSI)**:这是Spring Security的主要...
在本项目"SpringSecurity3.0 Demo"中,我们将深入探讨SpringSecurity 3.0版本的功能和用法。 首先,SpringSecurity的核心功能包括用户认证(Authentication)和权限授权(Authorization)。在3.0版本中,它引入了更...
标题 "springMVC+springSecurity3.0+maven" 指的是一个集成项目,它结合了Spring MVC、Spring Security 3.0和Maven这三个关键的Java开发工具和技术。让我们逐一深入理解这些技术及其相互之间的关系。 首先,Spring ...
在Spring Security 3.0版本中,这个框架进行了大量的改进和增强,以适应不断变化的安全需求。 Spring Security的核心概念包括: 1. **过滤器链**:这是Spring Security的主要执行机制,它通过一系列自定义的过滤器...
Spring Security 3.0 是一个强大的安全框架,用于在Java应用程序中实现全面的安全管理解决方案。它专注于提供身份验证、授权和访问控制功能,确保只有经过验证的用户才能访问受保护的资源。本教程将深入探讨Spring ...
教你使用 SpringSecurity 3.0 一步一步教你使用SpringSecurity,从保护web应用到保护业务方法调用
SpringSecurity3.0相对比较稳定。本实例包含SpringSecurity3.0的基本配置,包含所需的Jar包和mysql数据库文件,直接导入myeclipes中并导入数据库即可运行,配置文件简单易懂,适合SpringSecurity初学者配置入门。...
Spring Security 3.0是该框架的一个重要版本,提供了许多安全控制功能,用于保护Web应用程序不受到黑客的攻击。 ### Spring Security 3.0入门知识点: 1. **Spring Security概述**: Spring Security是一个提供...
在Spring Security 3.0x中,配置"remember-me"服务主要包括以下几个步骤: 1. **依赖配置**:首先,确保你的项目依赖于Spring Security 3.0.x版本。在你的pom.xml或build.gradle文件中添加相应的依赖。 2. **配置...
<html xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"> <h1>Welcome, <sec:authentication property="principal.username"/></h1> ``` ##### 4. 实现方法级安全 在方法级别添加安全...
在本示例中,我们关注的是Spring Security 3.0版本,它在Spring MVC、Spring JDBC和AOP(面向切面编程)事务管理的基础上构建了一个安全框架。这个框架为Web应用程序提供了全面的安全解决方案,包括用户认证、授权、...
简单springsecurity3.0的例子 做了详细注释,另外集成了tiles 和conversion插件,希望对你有帮助,里面有不对的地方请给我留言,我加你QQ一起讨论..注:我是通过maven管理的,如果你不是的话可能无法运行起来,只能看代码
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 Security 3.0 自定义表结构详解 在企业级应用开发中,Spring Security作为Spring框架的一个子项目,提供了一套完整的权限管理和安全性解决方案。它不仅能够处理身份验证(authentication)和授权...