use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class AsyncFactory method recordLoginLog.
/**
* 记录登陆信息
*
* @param username 用户名
* @param status 状态
* @param message 消息
* @param args 列表
* @return 任务task
*/
public static TimerTask recordLoginLog(final String username, final StatusEnum status, final String message, final Object... args) {
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
if (null == attributes) {
return new TimerTask() {
@Override
public void run() {
}
};
}
if (attributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes) attributes).getRequest();
final UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
String ip = ServletUtil.getClientIP(request);
return new TimerTask() {
@Override
public void run() {
// 打印信息到日志
String s = "[" + ip + "]" + "[" + username + "]" + "[" + status.getName() + "]" + "[" + message + "]";
LOGGER.info(s, args);
// 获取客户端操作系统
String os = userAgent.getOperatingSystem().getName();
// 获取客户端浏览器
String browser = userAgent.getBrowser().getName();
LoginLogEntity entity = new LoginLogEntity();
entity.setUsername(username);
entity.setLoginIp(ip);
entity.setBrowser(browser);
entity.setOs(os);
entity.setMessage(message);
if (StatusEnum.SUCCESS.equals(status)) {
entity.setStatus(StatusEnum.SUCCESS.getValue());
} else {
entity.setStatus(StatusEnum.FAIL.getValue());
}
SpringUtil.getBean(ILoginLogService.class).save(entity);
}
};
} else {
return new TimerTask() {
@Override
public void run() {
}
};
}
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class UerOnlineServiceImpl method getOnline.
/**
* 获取在线缓存用户信息
*
* @return 缓存用户
*/
private List<UserOnlineDTO> getOnline() {
Map<String, UserDetails> online = tokenService.getOnline();
if (!CollectionUtils.isEmpty(online)) {
List<UserOnlineDTO> lists = Lists.newArrayList();
for (Map.Entry<String, UserDetails> detailsEntry : online.entrySet()) {
UserOnlineDTO dto = new UserOnlineDTO();
dto.setTokenId(detailsEntry.getKey());
User loginUser = (User) detailsEntry.getValue();
BeanUtil.copyProperties(loginUser, dto);
lists.add(dto);
}
return lists;
}
return Lists.newArrayList();
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class LoginServiceImpl method login.
@Nullable
public LoginUser login(@NonNull String username, @NonNull String password) {
Authentication authenticate = null;
try {
// see com.hb0730.boot.admin.security.service.UserDetailsServiceImpl#loadUserByUsername
authenticate = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
} catch (Exception e) {
if (e.getCause() instanceof com.hb0730.boot.admin.exceptions.UsernameNotFoundException) {
AsyncManager.me().execute(AsyncFactory.recordLoginLog(username, StatusEnum.FAIL, "用户不存在"));
throw new LoginException(ResponseStatusEnum.USER_NAME_NOT_FONT, "用户不存在");
} else if (e instanceof BadCredentialsException) {
AsyncManager.me().execute(AsyncFactory.recordLoginLog(username, StatusEnum.FAIL, "用户名或者密码错误"));
throw new LoginException(ResponseStatusEnum.USER_PASSWORD_ERROR, "用户名或者密码错误");
} else {
AsyncManager.me().execute(AsyncFactory.recordLoginLog(username, StatusEnum.FAIL, e.getMessage()));
throw new LoginException(ResponseStatusEnum.USE_LOGIN_ERROR, "登录异常,请稍后尝试", e);
}
}
User user = (User) authenticate.getPrincipal();
String accessToken = tokenService.createAccessToken(user);
LoginUser loginUser = BeanUtil.toBean(user, LoginUser.class);
assert loginUser != null;
loginUser.setAccessToken(accessToken);
AsyncManager.me().execute(AsyncFactory.recordLoginLog(username, StatusEnum.SUCCESS, "登录成功"));
return loginUser;
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class AuthenticationTokenFilter method doFilterInternal.
@Override
protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull FilterChain filterChain) throws ServletException, IOException {
LOGGER.debug("authentication token<<<<");
User loginUser = tokenService.getLoginUser(request);
if (Objects.nonNull(loginUser) && Objects.isNull(SecurityUtils.getAuthentication())) {
tokenService.verifyAccessToken(request);
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
}
filterChain.doFilter(request, response);
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class TestControllerTest method test1Test.
@Test
public void test1Test() throws Exception {
Map<String, String> map = new HashMap<>();
map.put("username", "Administrator");
map.put("password", "123456");
MvcResult result = mvc.perform(MockMvcRequestBuilders.post("/auth/login").contentType(MediaType.APPLICATION_JSON_UTF8).content(JsonUtils.objectToJson(map)).accept(MediaType.APPLICATION_JSON_UTF8)).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();
Assert.assertNotNull(result);
String contentAsString = result.getResponse().getContentAsString();
Result loginUser = JsonUtils.jsonToObject(contentAsString, Result.class);
Object data = loginUser.getData();
LoginUser user = JsonUtils.jsonToObject(JsonUtils.objectToJson(data), LoginUser.class);
String accessToken = user.getAccessToken();
result = mvc.perform(MockMvcRequestBuilders.get("/auth/test/ada").header("Authorization", "Bearer " + accessToken).accept(MediaType.APPLICATION_JSON_UTF8).contentType(MediaType.APPLICATION_JSON_UTF8)).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();
Assert.assertNotNull(result);
String contentResult = result.getResponse().getContentAsString();
log.info(contentResult);
}
Aggregations