Commit 67cc15d7 authored by 黎博's avatar 黎博

update

parent bba76ede
package cn.qg.holmes.controller.login; package cn.qg.holmes.controller.login;
import cn.qg.holmes.common.JsonResult; import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.auth.User;
import cn.qg.holmes.mapper.auth.UserMapper;
import cn.qg.holmes.service.ldap.LoginService; import cn.qg.holmes.service.ldap.LoginService;
import cn.qg.holmes.service.ldap.TokenService;
import cn.qg.holmes.service.ldap.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import sun.security.provider.MD5;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
@CrossOrigin @CrossOrigin
@RestController @RestController
...@@ -15,8 +25,28 @@ public class LoginController { ...@@ -15,8 +25,28 @@ public class LoginController {
@Autowired @Autowired
LoginService loginService; LoginService loginService;
@Autowired
TokenService tokenService;
@Autowired
UserService userService;
@PostMapping("/login") @PostMapping("/login")
public JsonResult login(String username, String password) { public JsonResult login(String username, String password) {
return JsonResult.buildSuccessResult(loginService.login(username, password)); boolean loginResult = loginService.login(username, password);
if (!loginResult) {
return JsonResult.buildErrorStateResult("用户名或密码错误", false);
}
User user = userService.getUserByUsername(username);
// 用户不存在,则创建新用户
if (user == null) {
user.setUsername(username);
user.setPassword(DigestUtils.md5DigestAsHex(password.getBytes(StandardCharsets.UTF_8)));
userService.save(user);
}
String token = tokenService.generateToken(user.getId());
Map<String, Object> map = new HashMap<>();
map.put("token", token);
return JsonResult.buildSuccessResult(map);
} }
} }
package cn.qg.holmes.entity.auth;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class Permission {
@TableId(type = IdType.AUTO)
private Integer id;
private String permissionName;
private String permissionCode;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.entity.auth;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class Role {
@TableId(type = IdType.AUTO)
private Integer id;
private String roleName;
private String roleCode;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.entity.auth;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class RolePermission {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer roleId;
private Integer permissionId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.entity.auth;
import lombok.Data;
import java.util.List;
import java.util.Set;
@Data
public class SessionUserInfo {
private Integer userId;
private String username;
private List<Integer> roleIds;
private Set<String> menuList;
private Set<String> permissionList;
}
package cn.qg.holmes.entity.auth;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class User {
@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.entity.auth;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class UserRole {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer userId;
private Integer roleId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.mapper.auth;
import cn.qg.holmes.entity.auth.Permission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface PermissionMapper extends BaseMapper<Permission> {
}
package cn.qg.holmes.mapper.auth;
import cn.qg.holmes.entity.auth.Role;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface RoleMapper extends BaseMapper<Role> {
}
package cn.qg.holmes.mapper.auth;
import cn.qg.holmes.entity.auth.RolePermission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface RolePermissionMapper extends BaseMapper<RolePermission> {
}
package cn.qg.holmes.mapper.auth;
import cn.qg.holmes.entity.auth.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}
package cn.qg.holmes.mapper.auth;
import cn.qg.holmes.entity.auth.UserRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserRoleMapper extends BaseMapper<UserRole> {
}
...@@ -2,5 +2,5 @@ package cn.qg.holmes.service.ldap; ...@@ -2,5 +2,5 @@ package cn.qg.holmes.service.ldap;
public interface LoginService { public interface LoginService {
String login(String username, String password); boolean login(String username, String password);
} }
package cn.qg.holmes.service.ldap;
import cn.qg.holmes.entity.auth.SessionUserInfo;
public interface TokenService {
String generateToken(Integer userId);
SessionUserInfo getUserInfoFromCache(String token);
}
package cn.qg.holmes.service.ldap;
import cn.qg.holmes.entity.auth.User;
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
User getUserByUsername(String username);
}
...@@ -13,9 +13,9 @@ public class LoginServiceImpl implements LoginService { ...@@ -13,9 +13,9 @@ public class LoginServiceImpl implements LoginService {
LdapService ldapService; LdapService ldapService;
@Override @Override
public String login(String username, String password) { public boolean login(String username, String password) {
boolean result = ldapService.authenticate(username, password); boolean result = ldapService.authenticate(username, password);
log.info("登录结果为:{}", result); log.info("登录结果为:{}", result);
return null; return result;
} }
} }
package cn.qg.holmes.service.ldap.impl;
import cn.qg.holmes.entity.auth.SessionUserInfo;
import cn.qg.holmes.entity.auth.User;
import cn.qg.holmes.mapper.auth.UserMapper;
import cn.qg.holmes.service.ldap.TokenService;
import cn.qg.holmes.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.naming.ContextNotEmptyException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
@Service
public class TokenServiceImpl implements TokenService {
private final String TOKEN_PREFIX = "user:token:";
@Autowired
RedisUtils redisUtils;
@Autowired
UserMapper userMapper;
/**
* 生成token并存放到redis
* @param userId 用户id
* @return
*/
@Override
public String generateToken(Integer userId) {
String token = UUID.randomUUID().toString().replace("-", "").substring(0, 20);
Map<String, Object> map = new HashMap<>();
User user = userMapper.selectById(userId);
map.put("userId", userId);
map.put("username", user.getUsername());
//设置用户信息缓存
redisUtils.set(TOKEN_PREFIX + token, map);
return token;
}
/**
* 根据token从redis获取用户信息
* @param token 用户token
* @return
*/
@Override
public SessionUserInfo getUserInfoFromCache(String token) {
if (StringUtils.isEmpty(token)) {
return null;
}
SessionUserInfo sessionUserInfo = (SessionUserInfo) redisUtils.get(token);
return sessionUserInfo;
}
}
package cn.qg.holmes.service.ldap.impl;
import cn.qg.holmes.entity.auth.User;
import cn.qg.holmes.mapper.auth.UserMapper;
import cn.qg.holmes.service.ldap.UserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
UserMapper userMapper;
@Override
public User getUserByUsername(String username) {
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.eq("username", username);
User user = userMapper.selectOne(userQueryWrapper);
return user;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment