🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 登录接口 `/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`参数为系统预留参数,可根据业务自行扩展,在登录接口内自行实现不同值的登录方式;