个性化开发
oauth 服务提供了很多可定制化的端点,使用者可根据实际需求个性化 oauth 认证中的一些业务逻辑,然后在客制化类上添加 @Component
生效
修改登录页面
- 页面定制
oauth 登录页面默认提供一个模板页面,模板对应 main
目录,html 及相关 js、css 源码可从依赖的 hzero-template-oauth-main.jar
包中获取。登录页面的入口为 login.html
。
- 模板使用
oauth 默认使用 main
模板,使用哪个模板可通过如下配置指定。
hzero:
oauth:
# 登录页面标题
title: HZERO
login:
# 登录页面默认模板,在请求 /oauth/authorize 接口时,可通过 template 参数指定使用的模板
default-template: main
-
定制化有两种方式
- 一是局部修改,可通过覆盖源码的方式定制登录页面,只需复制出需要调整的文件放到
resources
同路径下即可。 - 二是完全自定义开发模板,可在
resources/templates
下建模板目录即可,参照main
的方式完成,需保证存在login.html
登录入口页面。
- 一是局部修改,可通过覆盖源码的方式定制登录页面,只需复制出需要调整的文件放到
登录用户信息校验
UserAccountService
: 用户账户相关,提供了用户查询、检查用户账户、检查用户租户、检查手机/邮箱是否已验证、检查用户角色、锁定用户、解锁用户 等接口。定制化时可自定义个性化 Service 并继承 DefaultUserAccountService
,Override 个性化的方法即可。
登录用户记录
LoginRecordService
: 登录记录相关,提供了 登录失败处理、登录成功处理、获取登录跳转地址 等接口。定制化时可自定义个性化 Service 并继承 DefaultLoginRecordService
,Override 个性化的方法即可。
登录用户信息扩展
UserDetailsWrapper
: CustomUserDetails 处理,只有一个 wrap
接口,用于对 CustomUserDetails 做一些包装处理,例如加入用户的当前租户,角色列表等。
ClientDetailsWrapper
: CustomClientDetails 处理,只有一个 wrap
接口,用于对 CustomClientDetails 做一些包装处理,例如加入用户的当前租户,角色列表等。
资源匹配器
ResourceMatcher
: 资源匹配器,通过令牌访问 oauth 服务资源时,默认只开放了 /api/**
接口,若要匹配其它资源,需自定义资源匹配器,并设置如下参数。
hzero:
oauth:
# 认证服务器 自定义资源匹配器
custom-resource-matcher: ${HZERO_OAUTH_CUSTOM_RESOURCE_MATCHER:true}
OAuth 获取 Token 接口
LoginTokenService
: 抽象增强了 OAuth2.0 标准的获取 access_token 的接口,开发者可根据自己的需求自定义获取 token 的接口,通过继承 LoginTokenService
并扩展相关认证方法即可。
MobileLoginTokenService
: 为默认的 手机号+短信验证码 获取 access_token 的接口实现
OpenLoginTokenService
: 为默认的三方登录 openId 获取 access_token 的接口实现
登录查询用户
CustomUserDetailsService
:默认从数据库加载用户信息
登录认证器
CustomAuthenticationProvider
:用户登录认证处理器,包含用户的获取、账号有效性校验、校验验证码、校验密码、Ldap用户校验等,可以通过继承该类客制化相关校验。
登录成功处理器
CustomAuthenticationSuccessHandler
:用户登录成功处理器,用户登录成功将记录登录日志,默认跳转到前端地址。
登录失败处理器
CustomAuthenticationFailureHandler
:用户登录失败处理器,用户登录失败信息处理,返回异常信息,再次返回到登录页面。
退出处理器
CustomLogoutSuccessHandler
:用户退出处理器,记录用户退出日志,重定向到退出页面。