作者 钟来

登录鉴权

package com.zhonglai.luhui.api.dto;
import com.alibaba.fastjson.annotation.JSONField;
import com.ruoyi.common.core.domain.BaseLoginUser;
import com.ruoyi.system.login.dto.Yu2leUserInfo;
import com.ruoyi.system.login.dto.Yu2leUserLogin;
import org.springframework.security.core.GrantedAuthority;
import java.util.Collection;
public class ApiLoginUser extends BaseLoginUser {
private Yu2leUserInfo userInfo;
private Yu2leUserLogin userLogin;
public ApiLoginUser(Yu2leUserInfo userInfo, Yu2leUserLogin userLogin) {
this.userInfo = userInfo;
this.userLogin = userLogin;
}
@Override
public Yu2leUserInfo getUser() {
return userInfo;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public String getPassword() {
return userLogin.getLoginPass();
}
@Override
public String getUsername() {
return userInfo.getLoginName();
}
/**
* 账户是否未过期,过期无法验证
*/
@JSONField(serialize = false)
@Override
public boolean isAccountNonExpired() {
return false;
}
/**
* 指定用户是否解锁,锁定的用户无法进行身份验证
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isAccountNonLocked() {
return false;
}
/**
* 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isCredentialsNonExpired() {
return false;
}
/**
* 是否可用 ,禁用的用户不能身份验证
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isEnabled() {
return false;
}
public void setUserInfo(Yu2leUserInfo userInfo) {
this.userInfo = userInfo;
}
public Yu2leUserLogin getUserLogin() {
return userLogin;
}
public void setUserLogin(Yu2leUserLogin userLogin) {
this.userLogin = userLogin;
}
}
... ... @@ -3,10 +3,10 @@ package com.zhonglai.luhui.api.service;
import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.login.dto.ApiLoginUser;
import com.ruoyi.system.login.dto.Yu2leUserInfo;
import com.ruoyi.system.login.dto.Yu2leUserLogin;
import com.ruoyi.system.service.PublicService;
import com.zhonglai.luhui.api.dto.ApiLoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -23,7 +23,7 @@ public class ApiUserDetailsServiceImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Yu2leUserLogin yu2leUserLogin = publicService.getObjectForTableName(Yu2leUserLogin.class,"loginName",username,"`liu_yu_le`.`user_login`");
Yu2leUserInfo yu2leUserInfo = null;
Yu2leUserInfo yu2leUserInfo = publicService.getObjectForTableName(Yu2leUserInfo.class,"loginName",username,"`liu_yu_le`.`user_info`");;
if (StringUtils.isNull(yu2leUserLogin) || StringUtils.isNull(yu2leUserInfo))
{
log.info("登录用户:{} 不存在.", username);
... ...
... ... @@ -304,7 +304,7 @@ public class PublicSQL {
{
where += " and ";
}
where += "`"+idnames[i]+"`='"+escapeSql(valuess[i]+"")+"'";
where += "`"+com.ruoyi.common.utils.StringUtils.toUnderScoreCase(idnames[i])+"`='"+escapeSql(valuess[i]+"")+"'";
}
String sql = "select "+select+" from "+tableName + " where " +where;
... ...
package com.ruoyi.system.login.dto;
import com.ruoyi.common.core.domain.BaseLoginUser;
import com.ruoyi.common.utils.DESUtil;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.security.core.GrantedAuthority;
import java.util.Collection;
public class ApiLoginUser extends BaseLoginUser {
private static final long serialVersionUID = -2519976444812946707L;
private Yu2leUserInfo yu2leUserInfo;
private Yu2leUserLogin yu2leUserLogin;
public ApiLoginUser(Yu2leUserLogin yu2leUserLogin) {
public ApiLoginUser(Yu2leUserInfo yu2leUserInfo,Yu2leUserLogin yu2leUserLogin) {
this.yu2leUserLogin = yu2leUserLogin;
this.yu2leUserInfo = yu2leUserInfo;
}
@Override
... ... @@ -26,7 +29,7 @@ public class ApiLoginUser extends BaseLoginUser {
@Override
public String getPassword() {
return yu2leUserLogin.getLoginPass();
return SecurityUtils.encryptPassword(DESUtil.decode(yu2leUserLogin.getLoginPass(),yu2leUserLogin.getUserLoginPassKey()));
}
@Override
... ... @@ -61,4 +64,12 @@ public class ApiLoginUser extends BaseLoginUser {
public void setYu2leUserLogin(Yu2leUserLogin yu2leUserLogin) {
this.yu2leUserLogin = yu2leUserLogin;
}
public Yu2leUserInfo getYu2leUserInfo() {
return yu2leUserInfo;
}
public void setYu2leUserInfo(Yu2leUserInfo yu2leUserInfo) {
this.yu2leUserInfo = yu2leUserInfo;
}
}
... ...
... ... @@ -6,10 +6,7 @@ import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.system.domain.entity.SysUser;
import com.ruoyi.system.login.dto.ApiLoginUser;
... ... @@ -84,7 +81,7 @@ public class LoginService {
public String apiLoginByPass(String user,String pass) {
// 用户验证
Authentication authentication = userPasswordVerification(user,pass);
AsyncManager.me().execute(AsyncFactory.recordLogininfor(user, Constants.LOGIN_SUCCESS, MessageUtils.message("apiuser.login.success")));
AsyncManager.me().execute(AsyncFactory.recordLogininfor(user, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
ApiLoginUser loginUser = (ApiLoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
return tokenService.createToken(loginUser);
... ... @@ -107,7 +104,7 @@ public class LoginService {
public String yu2leTokenLogin(String token) {
Yu2leLoginToken loginToken = new Yu2leLoginToken(token);
Yu2leUserLogin userInfo = publicService.getObjectForTableName(Yu2leUserLogin.class,"id",loginToken.getUserId()+"","`liu_yu_le`.`user_login`");
return apiLoginByPass(userInfo.getLoginName(),userInfo.getLoginPass());
return apiLoginByPass(userInfo.getLoginName(),DESUtil.decode(userInfo.getLoginPass(),userInfo.getUserLoginPassKey()));
}
/**
... ...
... ... @@ -69,7 +69,7 @@ public interface PublicMapper {
* @return
*/
@SelectProvider(type = PublicSQL.class, method = "getObject")
<T> T getObjectForTableName(@Param("class") Class<T> clas, @Param("idName") String idName, @Param("values") String values, @Param("tableName") String tableName);
Map<String,Object> getObjectForTableName(@Param("class") Class<?> clas, @Param("idName") String idName, @Param("values") String values, @Param("tableName") String tableName);
/**
* 查询 通过条件查询单个指定项目
... ...
package com.ruoyi.system.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.system.mapper.PublicMapper;
import com.ruoyi.system.service.PublicService;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -87,7 +88,13 @@ public class PublicServiceImpl implements PublicService {
*/
public <T> T getObjectForTableName(Class<T> clas, String idName, String values, String tableName)
{
return publicMapper.getObjectForTableName(clas,idName,values,tableName);
Object oj = publicMapper.getObjectForTableName(clas,idName,values,tableName);
if(null != oj)
{
return JSONObject.parseObject(JSONObject.toJSONString(oj),clas);
}
return null;
}
/**
... ...