前讲讲到AuthenticationFilter会拦截我们的登录表单提交信息并根据相应的信息构造出对应的用户凭证,这里的用户凭证将会贯穿整个Spring Security安全验证过程,如果验证用户凭证成功,我们可以为相应的用户凭证分配相应的权限,并将用户导向登录成功的界面。来看看这里的多种类型用户登录凭证的实现吧,这里主要实现了两种用户凭证,一种是前台用户登录凭证,一种是后台用户登录凭证。
package com.template.security.authentication.token;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 12-11-4
* Time: 下午11:23
*/
public class ForendAuthenticationToken extends AbstractAuthenticationToken {
private String email;
private String phone;
public ForendAuthenticationToken(String email, String phone, List<GrantedAuthority> grantedAuthorities) {
super(grantedAuthorities);
this.email = email;
this.phone = phone;
}
public String getEmail() {
return email;
}
public String getPhone() {
return phone;
}
@Override
public Object getCredentials() {
return null;
}
@Override
public Object getPrincipal() {
return null;
}
}
package com.template.security.authentication.token;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import java.util.Collection;
/**
* Created by IntelliJ IDEA.
* User: Zhong Gang
* Date: 12-11-4
* Time: 下午11:24
*/
public class BackendAuthenticationToken extends UsernamePasswordAuthenticationToken {
private String captcha;
public BackendAuthenticationToken(Object principal, Object credentials, Collection<? extends GrantedAuthority> authorities, String captcha) {
super(principal, credentials, authorities);
this.captcha = captcha;
}
public String getCaptcha() {
return captcha;
}
}
为了标志我们创建的类为一个用户凭证并且能够被Spring Security识别,我们需要实现Authentication接口,因为Spring Security为我们提供了一个抽象的凭证,所以这里我的前台凭证就继承了这样一个抽象的凭证类,名为AbstractAuthenticationToken, 根据前台表单的提交信息有邮件地址和电话号码,所以实现的ForendAuthenticationToken包含这样两个属性,而Spring Security为我们提供了常见的用户名和密码的登录凭证实现,我的后台登录表单信息只是多了一个验证码,所以我直接继承了UsernamePasswordAuthenticationToken这样一个类。
分享到:
相关推荐
在"Spring Security 3多用户登录实现之七 用户验证失败处理改进"这个主题中,我们将探讨如何优化Spring Security的用户验证流程,以提高用户体验和系统安全性。 1. **用户验证流程**: Spring Security的认证过程...
在压缩包文件`spring_gateway_security_webflux`中,可能包含了示例代码或配置文件,用于演示如何在Spring Cloud Gateway中集成Spring Security,实现统一登录认证鉴权。这些资源可以帮助开发者更快地理解和实践上述...
### Spring Security 3.0.1 中文版知识点解析 #### 一、Spring Security 3.0.1 概览 ##### 1.1 Spring Security 是什么? Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它提供了许多功能...
Spring Security 3提供了“记住我”服务,允许用户在关闭浏览器后仍保持登录状态。这通过在用户认证成功时生成一个持久化的令牌来实现。 五、CSRF保护 为了防止跨站请求伪造(CSRF)攻击,Spring Security 3引入了...
Spring Security和OAuth 2.0是两个在Web应用安全领域广泛应用的框架,它们结合使用可以构建强大的单点登录(SSO)和认证授权系统。在这个系统中,`xp-sso-server`代表了认证服务器,而`xp-sso-client-a`和`xp-sso-...
### 单点登录SSO解决方案之SpringSecurity+JWT实现 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On,简称SSO)是一种认证机制,允许用户仅通过一次登录就能访问同一域下的多个应用程序和服务。这种机制...
在用户登录时,认证过程首先通过用户表来校验用户身份。认证成功后,授权过程会检查用户的关联角色,进一步确定用户的角色权限和角色菜单,从而决定用户能够访问的菜单和拥有哪些操作权限。 Spring Security为...
在Spring Security 3版本中,这个框架进一步完善了其特性和性能,使其成为开发者构建安全应用的首选工具。下面将详细探讨Spring Security 3中的关键知识点。 1. **核心组件**: - **Filter Chain**: Spring ...
用户登录时,系统会验证提供的凭证,如果通过,则创建一个Authentication对象,存储在SecurityContext中。 2. **授权(Authorization)**:一旦用户被认证,授权过程就开始了,决定用户是否可以访问特定的资源或...
通常,用户通过登录界面提供凭证,框架会验证这些凭证并创建一个Authentication对象。 2. **授权(Authorization)**:授权决定了已认证的用户可以访问哪些资源或执行哪些操作。Spring Security 支持角色基础的授权...
6. **记住我功能**:Spring Security支持“记住我”功能,允许用户在一段时间内无须重新登录。这通过在客户端存储一个长期有效的令牌来实现。 7. **OAuth2整合**:Spring Security可以与OAuth2框架集成,支持第三方...
在这个项目中,它被用来实现用户权限管理,确保只有授权的用户才能访问特定的资源和服务。Spring MVC 作为 MVC 模式在 Spring 框架中的实现,负责处理 HTTP 请求和响应,而 MyBatis 是一个轻量级的持久层框架,用于...
### Spring Security3 相关知识点概述 #### 第一章:一个不安全应用的剖析 **安全审计** - **目的**:识别系统中的安全隐患,并评估安全措施的有效性。 - **过程**:通过模拟攻击来测试系统的安全性,分析日志记录...
- Spring Security 的验证机制允许开发者自定义认证过程,包括用户凭证的检查和存储。 - **直接设置 SecurityContextHolder 的内容**:允许在特定情况下直接设置用户的 Authentication 信息,从而绕过常规的身份...
4. **登录与注销处理**:Spring Security会自动处理登录和注销请求,但你可能需要自定义登录页面或者实现特定的注销逻辑。 **三、客户端应用的SSO体验** 1. **用户访问**:当用户首次访问受保护的资源时,会被...
在Demo中,你可能会看到如何通过Spring Security实现用户登录、基于角色的权限控制,以及如何自定义登录失败和成功处理器。这些基本操作为理解Spring Security的全貌打下了基础。 总的来说,Spring Security通过...
在本主题中,我们将深入探讨如何使用Spring Security与数据库配合,实现用户认证。这一过程涉及多个步骤,包括配置、数据库模型、用户DetailsService 和权限控制。 1. **配置Spring Security** 在Spring Security...
标题中的"Spring Security 3 与 CAS 单点登录配置-Server"涉及到的是在Java Web开发中使用Spring Security 3框架集成Central Authentication Service (CAS)实现单点登录(Single Sign-On, SSO)的服务器端配置。...
3. 整合 Spring Security - **表设计**:为了实现用户管理和权限控制,通常需要设计用户、角色和权限关联的数据库表。 - **与 Spring Security 集成说明** - **身份认证**:这通常涉及自定义认证提供者,处理...
- `AuthenticationProvider`验证用户凭证,通常通过`UserDetailsService`查询数据库。 - 如果认证成功,创建`Authentication`对象并存储在Security Context中。 - 授权过程开始,`Access Decision Manager`检查...