## 登錄接口
`/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