- 浏览: 260031 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (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 3多用户登录实现之五 验证用户凭证
- 博客分类:
- Spring security
有了用户凭证后, 如何验证用户的凭证是否正确呢, 这就需要借助AuthenticationManager了, AuthenticationManager可以包含多个AuthenticationProvider, 每个AuthenticationProvider都会针对特定的AuthenticationToken, 也就是用户凭证来验证相应的用户凭证是否正确。
来看看我为了实现验证前台用户凭证和后台用户凭证而实现的AuthenticationProvider吧。
package com.template.security.authentication.provider; import com.template.security.authentication.token.BackendAuthenticationToken; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.AuthenticationServiceException; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.context.SecurityContextHolder; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 12-11-4 * Time: 下午11:16 */ public class BackendAuthenticationProvider implements AuthenticationProvider { @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { BackendAuthenticationToken authenticationToken = (BackendAuthenticationToken) authentication; // String captcha = authenticationToken.getCaptcha(); // if (captcha.startsWith("ZZ")) { // throw new AuthenticationServiceException("The captcha is wrong!"); // } String username = (String) authenticationToken.getPrincipal(); String password = (String) authenticationToken.getCredentials(); if (username.equalsIgnoreCase("ZHONGGANG") && password.equalsIgnoreCase("123")) { SecurityContextHolder.getContext().setAuthentication(authenticationToken); return authenticationToken; } throw new AuthenticationServiceException("The username or password is not correct!"); } @Override public boolean supports(Class<?> authentication) { return BackendAuthenticationToken.class.isAssignableFrom(authentication); } }
package com.template.security.authentication.provider; import com.template.security.authentication.token.ForendAuthenticationToken; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.AuthenticationServiceException; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.context.SecurityContextHolder; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 12-11-4 * Time: 下午11:16 */ public class ForendAuthenticationProvider implements AuthenticationProvider { @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { ForendAuthenticationToken authenticationToken = (ForendAuthenticationToken) authentication; String email = authenticationToken.getEmail(); String phone = authenticationToken.getPhone(); if (email.endsWith("@qq.com") && phone.startsWith("139")) { authenticationToken.setAuthenticated(true); SecurityContextHolder.getContext().setAuthentication(authenticationToken); return authenticationToken; } throw new AuthenticationServiceException("The email or phone is not correct!"); } @Override public boolean supports(Class<?> authentication) { return ForendAuthenticationToken.class.isAssignableFrom(authentication); } }
不论是前台用户凭证验证还是后台用户凭证验证,都实现了AuthenticationProvider接口,其中的supports方法表明这个AuthenticationProvider需要对哪个类型的用户凭证进行验证。这里我只是进行了一个简单的验证,没有什么实际意义,如果你的验证需要与数据库打交道,你可以在AuthenticationProvider中注入你的服务。来看看配置文件中的相应配置信息吧。
<authentication-manager alias="authenticationManager"> <authentication-provider ref="forendAuthenticationProvider"/> <authentication-provider ref="backendAuthenticationProvider"/> </authentication-manager> <beans:bean id="backendAuthenticationProvider" class="com.template.security.authentication.provider.BackendAuthenticationProvider"/> <beans:bean id="forendAuthenticationProvider" class="com.template.security.authentication.provider.ForendAuthenticationProvider"/>
- SHTEPMPLATE.zip (43.6 KB)
- 下载次数: 53
发表评论
-
Spring Security 之 Session Management
2013-01-06 11:43 5562Spring Security为我们提供了Sess ... -
Spring Security 之 Digest Authentication
2013-01-04 16:22 0<?xml version=" ... -
Spring Security 之 Basic Authentication
2013-01-04 11:58 2017Spring Security实现Basic A ... -
Spring Security 3用户登录实现之十二 授权判断
2012-11-29 15:38 2206Spring Security在验证用户登录后的另 ... -
Spring Security 3多用户登录实现之十一 退出
2012-11-19 21:41 2625Spring Security的退出功能由Logou ... -
Spring Security 3用户登录实现之十 用户切换
2012-11-17 18:15 6265部分情况下用户希望能够在不知道其它用户账号及密码的 ... -
Spring Security 3多用户登录实现之九 基于持久化存储的自动登录
2012-11-17 00:40 6278Spring Security实现自动登录的基本流 ... -
Spring Security 3多用户登录实现之八 基于Cookie的自动登录
2012-11-15 22:44 10996Spring Security为我们提供了两种方式的自 ... -
Spring Security 3多用户登录实现之七 用户验证失败处理改进
2012-11-11 11:24 8898验证登录失败后的处理的常见处理是返回到登录页面,并 ... -
Spring Security 3多用户登录实现之六 用户验证后处理
2012-11-11 00:42 4165验证用户后主要有这样两种走向,一种是验证失败,一种 ... -
Spring Security 3多用户登录实现之四 用户凭证
2012-11-10 20:00 5068前讲讲到AuthenticationFilt ... -
Spring Security 3多用户登录实现之三 验证过滤器
2012-11-10 19:58 15105当填写完成登录表单提交后,首先会被对应的提交表单提起 ... -
Spring Security 3多用户登录实现之二 多登录界面展示
2012-11-10 19:58 9728接前讲,首先针对一个多种用户类型的登录需求,需要先 ... -
Spring Security 3多用户登录实现一
2012-11-10 19:57 4965使用Spring Security 3 来实现多种 ... -
Spring security customize password encoder
2011-07-29 22:21 2357Spring security为我们 ... -
Spring security防用户重复登录
2011-07-28 23:28 3905使用Spring security如何防止用户的重复登录呢 ... -
Spring security用户权限数据库配置
2011-07-28 22:11 6524关于安全性服务,有两个重要的概念需要理解,一是认证,即判断 ... -
Spring security HTTP Basic认证
2011-07-27 21:54 5256Spring security框架集成了多种流行的安全认证 ...
相关推荐
NULL 博文链接:https://dreamzhong.iteye.com/blog/1722261
NULL 博文链接:https://dreamzhong.iteye.com/blog/1722422
NULL 博文链接:https://dreamzhong.iteye.com/blog/1727761
NULL 博文链接:https://dreamzhong.iteye.com/blog/1729288
SpringBoot+SpringSecurity+JWT+MybatisPlus实现基于注解的权限验证,可根据注解的格式不同,做到角色权限控制,角色加资源权限控制等,粒度比较细化。 @PreAuthorize("hasAnyRole('ADMIN','USER')"):具有admin或...
项目应用到spring3,security3,hibernate4,struts2;应用中涉及到安全认证,目前项目有独立的统一认证网关,所以登录时只需要将安全认证网关的认证后信息塞到spring security中,由security3来管理用户的权限设置。...
IDEA + SpringBoot + SpringSecurity + JPA 实现用户角色权限登录认证,security过滤请求资源,用户登录获取用户角色权限,过滤用户非法请求等
springboot+ spring security实现登录认证
SpringBoot+SpringSecurity整合示例代码,实现了从数据库中获取信息进行登录认证和权限认证。 本项目为idea工程,请用idea2019导入(老版应该也可以)。 本项目用户信息所需sql文件,在工程的resources文件夹下,...
NULL 博文链接:https://dreamzhong.iteye.com/blog/1727764
spring security 基于oauth 2.0 实现 sso 单点登录Demo 使用 spring security 基于oauth 2.0 实现 sso 单点登录Demo spring boot + spring security + spring security oauth
该资源是springsecurity+oauth2+jwt实现的单点登录demo,模式为授权码模式,实现自定义登录页面和自定义授权页面。应用数据存在内存中或者存在数据库中(附带数据库表结构),token存储分为数据库或者Redis。demo...
Spring-Security结合JWT 实现前后端分离完成权限验证功能案例,案例中,主要完成用户登录获取Token,通过Token访问Rest接口,没有权限或授权失败时返回JSON,前端根据状态码进行重新登录;案例中的用户名称: jake_j...
spring-security多登录页面配置,包括前台和后台分开登录界面,注销登录返回不同的界面等。
用STS(Spring Tool Suite)开发的,spring mvc + spring security 实现的最简单的登录系统,无数据库。
项目中使用到的技术包含SpringBoot、SpringSecurity&oauth2(安全资源和授权中心模式、包括登录接口自定义返回字段、自定义手机号+密码登录、自定义免密登录)、Queue队列、线程池、xss攻击配置、SpringCache、Mybatis...
spring security3 中文版本
spring-security多个登录页面配置,分开了前台登录页面和后台登录页面登录,还有注销返回的不同的界面。
单点登录SSO解决方案之SpringSecurity+JWT实现.docx
SpringSecurity实现表单安全登录、图形验证的校验、记住我时长控制机制、第三方登录