通用安全模块 集成 spring security、spring cloud oauth、spring social,实现用户名密码、手机验证码、社交(微信、QQ、微博)等常用登录方式、基于jwt的sso,集群session管理等功能。
依赖 | 版本 |
---|---|
Spring Boot | 2.5.14 |
Spring Cloud | 2020.0.5 |
Spring Cloud Alibaba | 2021.1 |
Spring Security OAuth2 | 2.3.6 |
HuTool | 5.8.8 |
名称 | 描述 |
---|---|
healthy-app | APP模块 |
healthy-browser | 浏览器模块 |
healthy-core | 核心模块 |
healthy-test | 测试工程 |
依赖关系为: test依赖 browser和app,browser和app依赖core.
@SpringBootApplication(scanBasePackages={"com.example.demo","com.healthy.security"})
1.引入依赖(pom.xml)
<dependency>
<groupId>com.healthy.security</groupId>
<artifactId>healthy-security-browser</artifactId>
<version>${healthy.security.version}</version>
</dependency>
2.配置系统(参见 application-example.yml)
3.增加UserDetailsService接口实现
4.如果需要记住我功能
@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
tokenRepository.setDataSource(dataSource);
//自动创建数据库表
//tokenRepository.setCreateTableOnStartup(true);
return tokenRepository;
}
create table persistent_logins (
username varchar(64) not null,
series varchar(64) primary key,
token varchar(64) not null,
last_used timestamp not null
);
5.如果需要社交登录功能,需要以下额外的步骤
-- 社交登录表文件来自: org.springframework.social.connect.jdbc包路径下的JdbcUsersConnectionRepository.sql
-- 如果需要设置表前缀. 请配置: healthy.security.social.jdbc-table-prefix
create table UserConnection (userId varchar(255) not null,
providerId varchar(255) not null,
providerUserId varchar(255),
rank int not null,
displayName varchar(255),
profileUrl varchar(512),
imageUrl varchar(512),
accessToken varchar(512) not null,
secret varchar(512),
refreshToken varchar(512),
expireTime bigint,
primary key (userId, providerId, providerUserId)
);
create unique index UserConnectionRank on UserConnection(userId, providerId, rank);
向spring容器注册以下接口的实现,可以替换默认的处理逻辑
密码加密解密策略 org.springframework.security.crypto.password.PasswordEncoder
表单登录用户信息读取逻辑 org.springframework.security.core.userdetails.UserDetailsService
社交登录用户信息读取逻辑 org.springframework.social.security.SocialUserDetailsService
Session失效时的处理策略 org.springframework.security.web.session.InvalidSessionStrategy
并发登录导致前一个session失效时的处理策略配置 org.springframework.security.web.session.SessionInformationExpiredStrategy
退出时的处理逻辑 org.springframework.security.web.authentication.logout.LogoutSuccessHandler
短信发送的处理逻辑 com.healthy.security.core.validate.code.sms.SmsCodeSender
向spring容器注册名为imageValidateCodeGenerator的bean,可以替换默认的图片验证码生成逻辑,bean必须实现以下接口 com.healthy.security.core.validate.code.ValidateCodeGenerator
如果spring容器中有下面这个接口的实现,则在社交登录无法确认用户时,用此接口的实现自动注册用户,不会跳到注册页面 org.springframework.social.connect.ConnectionSignUp
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。