## 登录接口
`/jpower-auth/auth/login`
## 登录模式
* 密码登录
* 验证码登录
* 手机号验证码登录(暂不支持,需自行实现发送手机验证码功能)
## `Authorization`客户端标识
`Authorization`为必传的header参数,用来标识客户端来源,具体用法参考:[多终端令牌认证](./多终端令牌认证.md)
## 自定义实现登录方式
`jpower-core-login`模块内已默认定义了`AuthUserInfo`接口,可自行继承该接口并实现接口方法,根据业务实现不同登录模式的方法即可,方法内部只要正确返回`UserInfo`即可。
`AuthUserInfo`接口核心代码如下
~~~
/**
* @author 郭丁志
* @Description //TODO 授权需求实现,如果有业务上的特殊需求,继承该类实现即可;继承的必须加上@Configuration注解
* @date 22:05 2020/8/6 0006
*/
@Configuration
public interface AuthUserInfo {
/**
* @author 郭丁志
* @Description //TODO 密码登陆各自业务实现
* @date 22:43 2020/8/6 0006
*/
default UserInfo getPasswordUserInfo(ChainMap tokenParameter){
String account = tokenParameter.getStr("account");
String password = tokenParameter.getStr("password");
String tenantCode = tokenParameter.getStr("tenantCode");
TbCoreUser result = UserCache.queryUserByLoginIdPwd(account,password,tenantCode);
return TokenGranterBuilder.toUserInfo(result);
}
/**
* @author 郭丁志
* @Description //TODO 验证码登陆各自业务实现
* @date 22:43 2020/8/6 0006
*/
default UserInfo getCaptchaUserInfo(ChainMap tokenParameter){
String account = tokenParameter.getStr("account");
String password = tokenParameter.getStr("password");
if (Fc.isNoneBlank(account, password)) {
return getPasswordUserInfo(tokenParameter);
}
return null;
}
/**
* @author 郭丁志
* @Description //TODO 第三方Code各自业务实现
* @date 22:43 2020/8/6 0006
*/
default UserInfo getOtherCodeUserInfo(ChainMap tokenParameter){
// String otherCode = tokenParameter.getStr("otherCode");
// String tenantCode = tokenParameter.getStr("tenantCode");
//
// TbCoreUser result = UserCache.getUserByCode(otherCode,tenantCode);
// return TokenGranterBuilder.toUserInfo(result);
throw new BusinessException("暂不支持第三方验证码登录");
}
/**
* @author 郭丁志
* @Description //TODO 刷新token各自业务实现
* @date 22:55 2020/8/6 0006
* @param userType 用户类型,扩展字典,根据业务自行使用
* @param userId 用户主键ID
* @return UserInfo 只需要实现获取UserInfo即可,token的刷新不用去管
*/
default UserInfo getRefreshUserInfo(String userType,String userId){
TbCoreUser result = UserCache.getById(userId);
return TokenGranterBuilder.toUserInfo(result);
}
/**
* @Author 郭丁志
* @Description //TODO 手机号登录
* @Date 08:40 2020-08-21
* @Param [tokenParameter]
* @return com.wlcb.jpower.module.common.auth.UserInfo
**/
default UserInfo getPhoneUserInfo(ChainMap tokenParameter){
String phone = tokenParameter.getStr("phone");
String tenantCode = tokenParameter.getStr(TenantConstant.TENANT_CODE);
TbCoreUser result = UserCache.getUserByPhone(phone,tenantCode);
return TokenGranterBuilder.toUserInfo(result);
}
}
~~~
一般情况下业务方写了自己的授权模块并maven继承了`jpower-core-login`模块的情况下,此方法可完美解决自己的登录查询需求。
## 注意项
* 登录模式只能用一种模式来获取token
* 不同的登录模式传递的参数不同没必要全部都传,需要注意的是验证码登录时,验证码相关参数在header里;
* header里的参数`User-Type`参数为系统预留参数,可根据业务自行扩展,在登录接口内自行实现不同值的登录方式;
- 序言
- 开发环境准备
- 环境要求
- 环境安装
- 基础环境安装
- Nacos安装
- Sentinel安装
- 插件安装
- 导入工程
- 运行工程
- 工程测试
- JPower特性
- 系统启动器
- 多终端令牌认证
- 系统鉴权
- 鉴权API
- 鉴权配置
- API权限配置
- 接口放行配置
- 数据权限
- redis缓存
- 动态网关
- 聚合文档
- SaaS多租户
- 概念
- 使用
- Xss防注入
- 日志记录
- 操作日志&错误日志
- SQL打印
- feign请求日志&配置
- gateway日志
- 服务日志打印
- 导入导出
- 字典查询
- 系统文件上传下载
- 接口监控
- 代码生成器
- 配置文件共享
- Mybatis过滤器
- 配置说明
- 高级实战
- nacos动态配置
- Seata分布式事务
- 简介
- docker启动
- 微服务配置
- 微服务远程调用
- 声明式服务调用 Feign
- 熔断机制 Sentinel
- sentinel流控
- 简介
- 微服务配置
- 配置nacos对接
- APM监控&链路追踪
- 简介
- 安装
- 微服务接入
- SpringBootAdmin监控
- ELK分布式日志追踪系统
- ELK简介
- ELK一键部署
- 微服务日志对接ELK
- JPower-Chat
- 配置说明
- 生产部署
- docker部署
- docker安装
- docker-compose安装
- harbor安装
- 部署步骤
- 版本升级
- 1.0.1升级到2.0.0
- 2.0.0升级到2.0.2
- 2.0.2升级2.1.0
- 2.1.0升级到2.1.1
- 2.1.1升级到2.1.2
- 2.1.2升级到2.1.4