- 浏览: 264741 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (87)
- Java (6)
- Frameworks (1)
- JavaWeb (3)
- Spring (6)
- Hibernate (26)
- Maven (2)
- Plugin (1)
- Velocity (1)
- Freemarker (1)
- Spring security (18)
- Google (5)
- Guice (5)
- rmi (1)
- Annotation (1)
- Binding (1)
- commons-fileupload (3)
- fileupload (3)
- ehcache (1)
- ApplicationContext (1)
- Resource (1)
- Validator (1)
- PropertyEditor (1)
- one-to-many (5)
- cascade (2)
- MessageSource (1)
- Serialize (1)
- Serializable (1)
- delete (1)
- delete-orphan (1)
- fetch (1)
- one-to-one (1)
- join (4)
- DomainObject (1)
- CRUD (1)
- composite-element (1)
- Hibernate ORM (14)
- dynamic-insert (1)
- dynamic-update (1)
- Search (1)
- DDD (0)
- Job (0)
- element (1)
- Unique (1)
- Group (1)
- tomcat (1)
- https (1)
- mysql (1)
最新评论
-
xurunchengof:
[url][url][url][img][img][img][ ...
Spring Security 3多用户登录实现之三 验证过滤器 -
Wind_ZhongGang:
yo8237233 写道你这样的话如果上传文件超过了50000 ...
Spring集成Commons fileupload,文件上传 -
yo8237233:
你这样的话如果上传文件超过了50000000就会报异常
Spring集成Commons fileupload,文件上传 -
zhuzhiguosnail:
Wind_ZhongGang 写道lianglaiyang 写 ...
Spring Security 3多用户登录实现一 -
曾老师:
?????
Spring Security 3用户登录实现之十 用户切换
Spring security为我们提供了一个接口PasswordEncoder,实现这个接口就可以定义一个自定义的PasswordEncoder,从而加强应用的安全认证和高安全性。
一。CustomizePasswordEncoder.java
package com.template.security; import org.springframework.dao.DataAccessException; import org.springframework.security.authentication.encoding.PasswordEncoder; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 11-7-29 * Time: 下午9:05 * To change this template use File | Settings | File Templates. */ public class CustomizePasswordEncoder implements PasswordEncoder { /** * * @param rawPass password which need to be encoded * @param salt * @return the encoded password * @throws DataAccessException */ @Override public String encodePassword(String rawPass, Object salt) throws DataAccessException { rawPass = "Zhong" + rawPass; rawPass = rawPass + "Gang"; return rawPass; } /** * * @param encPass the password encoded * @param rawPass the password encoded before * @param salt * @return true represents password is valid,false represents password is invalid * @throws DataAccessException */ @Override public boolean isPasswordValid(String encPass, String rawPass, Object salt) throws DataAccessException { rawPass = "Zhong" + rawPass; rawPass = rawPass + "Gang"; return encPass.equals(rawPass); } }
第一个方法将输入的密码进行特殊处理,防止密码轻易被破解,增强应用的安全性,而第二个方法则是判断输入的密码是否与应用中存储的密码相符合。因为应用中存储的密码是由输入的密码经过特殊处理后生成的,所以需要我们自己定义如何判断输入的密码和存储的密码的一致性。在两个方法中我们都可以发现这样一个形式参数salt,意即盐值,用于加密,具体过程就是把密码和盐值指定的内容合并在一起,再使用md5对合并后的内容进行演算,这样演算出来的密码因为攻击者不知道盐值,就很难反算出密码的原文。如果想要使用盐值除了要在自定义passwordEncoder中定义如何利用盐值来进行密码加密外,还要在security.xml中配置使用什么作为盐值。如下示:
<password-encoder ref="customizePasswordEncoder"> <salt-source user-property="username"/> </password-encoder>
这里表示使用用户的用户名作为盐值。
二。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"> <beans:import resource="datasource.xml"/> <http use-expressions="true"> <intercept-url pattern="/**" access="isAuthenticated()" requires-channel="http"/> <form-login/> <remember-me/> <session-management> <concurrency-control max-sessions="1" error-if-maximum-exceeded="true"/> </session-management> </http> <authentication-manager> <authentication-provider> <password-encoder ref="customizePasswordEncoder"/> <jdbc-user-service data-source-ref="dataSource" users-by-username-query="select username,password,enabled as status from user where username=?" authorities-by-username-query="select u.username,r.name as authority from user u join authority a on a.userid=u.id join role r on r.id=a.roleid where u.username=?"/> </authentication-provider> </authentication-manager> <beans:bean id="customizePasswordEncoder" class="com.template.security.CustomizePasswordEncoder"/> </beans:beans>
在配置文件中通过添加password-encoder元素来配置自定义的passwordEncoder。
发表评论
-
Spring Security 之 Session Management
2013-01-06 11:43 5630Spring Security为我们提供了Sess ... -
Spring Security 之 Digest Authentication
2013-01-04 16:22 0<?xml version=" ... -
Spring Security 之 Basic Authentication
2013-01-04 11:58 2056Spring Security实现Basic A ... -
Spring Security 3用户登录实现之十二 授权判断
2012-11-29 15:38 2259Spring Security在验证用户登录后的另 ... -
Spring Security 3多用户登录实现之十一 退出
2012-11-19 21:41 2665Spring Security的退出功能由Logou ... -
Spring Security 3用户登录实现之十 用户切换
2012-11-17 18:15 6357部分情况下用户希望能够在不知道其它用户账号及密码的 ... -
Spring Security 3多用户登录实现之九 基于持久化存储的自动登录
2012-11-17 00:40 6319Spring Security实现自动登录的基本流 ... -
Spring Security 3多用户登录实现之八 基于Cookie的自动登录
2012-11-15 22:44 11042Spring Security为我们提供了两种方式的自 ... -
Spring Security 3多用户登录实现之七 用户验证失败处理改进
2012-11-11 11:24 8998验证登录失败后的处理的常见处理是返回到登录页面,并 ... -
Spring Security 3多用户登录实现之六 用户验证后处理
2012-11-11 00:42 4247验证用户后主要有这样两种走向,一种是验证失败,一种 ... -
Spring Security 3多用户登录实现之五 验证用户凭证
2012-11-11 00:42 4983有了用户凭证后, 如何验证用户的凭证是否正确呢, 这就需 ... -
Spring Security 3多用户登录实现之四 用户凭证
2012-11-10 20:00 5117前讲讲到AuthenticationFilt ... -
Spring Security 3多用户登录实现之三 验证过滤器
2012-11-10 19:58 15183当填写完成登录表单提交后,首先会被对应的提交表单提起 ... -
Spring Security 3多用户登录实现之二 多登录界面展示
2012-11-10 19:58 9818接前讲,首先针对一个多种用户类型的登录需求,需要先 ... -
Spring Security 3多用户登录实现一
2012-11-10 19:57 5105使用Spring Security 3 来实现多种 ... -
Spring security防用户重复登录
2011-07-28 23:28 3992使用Spring security如何防止用户的重复登录呢 ... -
Spring security用户权限数据库配置
2011-07-28 22:11 6577关于安全性服务,有两个重要的概念需要理解,一是认证,即判断 ... -
Spring security HTTP Basic认证
2011-07-27 21:54 5310Spring security框架集成了多种流行的安全认证 ...
相关推荐
在压缩包`spring-customize-tag`中,我们可能找到以下内容: - `src/main/java`:包含Java源代码,可能有自定义标签的实现类和业务逻辑代码。 - `src/main/resources`:可能包含自定义配置文件和Spring的常规配置...
What you'll learn Key Spring Framework fundamentals How to use the ...customize your website What isand how to use the Spring Web Flow framework How to test your Spring MVC applications How to implement...
Spring expert Craig Walls uses interesting and practical examples to teach you both how to use the default settings effectively and how to override and customize Spring Boot for your unique ...
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
Microsoft Azure Security Center (IT Best Practices – Microsoft...Customize and perform operating system security baseline assessments Leverage integrated threat intelligence to identify known bad actors
Spring expert Craig Walls uses interesting and practical examples to teach you both how to use the default settings effectively and how to override and customize Spring Boot for your unique ...
Customize Rules 使用附件中的 myrules 中的内容覆盖 Customize 的内容然后保存
spring.redis.password= ``` 或者 ```yaml # application.yml spring: redis: host: localhost port: 6379 password: ``` 然后,定义Redis缓存配置。创建一个`RedisCacheConfig`类,启用Spring Cache,并指定...
Spring expert Craig Walls uses interesting and practical examples to teach you both how to use the default settings effectively and how to override and customize Spring Boot for your unique ...
在这个名为"customize springboot-starter.rar"的压缩包中,包含了自定义`spring-boot-starter`的源码和测试文件,我们可以从以下几个方面来理解这个知识点: 1. **Spring Boot Starter 概念**: `spring-boot-...
《前端开源库 Customize Engine Handlebars 深度解析》 在现代前端开发中,自定义引擎扮演着重要的角色,它们允许开发者根据特定需求定制化处理模板、数据和逻辑。其中,“customize-engine-handlebars”是一个专注...
在 `customize` 方法中,可以创建并配置 `ServerBootstrap`,设置线程池、BossGroup、WorkerGroup、ChannelInitializer 等。 3. **自定义 ChannelHandler** Netty 的核心是 ChannelPipeline,其中包含一系列 ...
在压缩包中的`customize-tabwidget`文件可能是项目的主要源代码文件,包含实现上述功能的C++代码。开发者可能使用了Qt Creator作为IDE,编写了`.cpp`和`.h`文件,定义了自定义的`TabWidget`类,并在`main.cpp`中实例...
在Spring Boot 2中,容器配置发生了显著的变化,主要体现在两个方面:一是接口`EmbeddedServletContainerCustomizer`被替换为`WebServerFactoryCustomizer`,二是`ConfigurableEmbeddedServletContainer`类被`...
然而,软件在使用过程中难免会出现一些问题,比如标题所提到的“不能启动Customize Perspective”就是一个常见的故障。本文将详细解析这个问题及其解决方案。 "Customize Perspective"是Eclipse和MyEclipse中的一个...