Search in sources :

Example 16 with User

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() {
            }
        };
    }
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) TimerTask(java.util.TimerTask) ServletRequestAttributes(org.springframework.web.context.request.ServletRequestAttributes) UserAgent(eu.bitwalker.useragentutils.UserAgent) ServletRequestAttributes(org.springframework.web.context.request.ServletRequestAttributes) RequestAttributes(org.springframework.web.context.request.RequestAttributes) LoginLogEntity(com.hb0730.boot.admin.project.monitor.login.log.model.entity.LoginLogEntity) ILoginLogService(com.hb0730.boot.admin.project.monitor.login.log.service.ILoginLogService)

Example 17 with User

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();
}
Also used : UserDetails(org.springframework.security.core.userdetails.UserDetails) User(com.hb0730.boot.admin.security.model.User) UserOnlineDTO(com.hb0730.boot.admin.project.monitor.online.model.dto.UserOnlineDTO) Map(java.util.Map)

Example 18 with User

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;
}
Also used : User(com.hb0730.boot.admin.security.model.User) LoginUser(com.hb0730.boot.admin.security.model.LoginUser) Authentication(org.springframework.security.core.Authentication) LoginException(com.hb0730.boot.admin.exceptions.LoginException) UsernamePasswordAuthenticationToken(org.springframework.security.authentication.UsernamePasswordAuthenticationToken) BadCredentialsException(org.springframework.security.authentication.BadCredentialsException) LoginUser(com.hb0730.boot.admin.security.model.LoginUser) LoginException(com.hb0730.boot.admin.exceptions.LoginException) BadCredentialsException(org.springframework.security.authentication.BadCredentialsException) Nullable(org.springframework.lang.Nullable)

Example 19 with User

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);
}
Also used : User(com.hb0730.boot.admin.security.model.User) UsernamePasswordAuthenticationToken(org.springframework.security.authentication.UsernamePasswordAuthenticationToken) WebAuthenticationDetailsSource(org.springframework.security.web.authentication.WebAuthenticationDetailsSource)

Example 20 with User

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);
}
Also used : HashMap(java.util.HashMap) MvcResult(org.springframework.test.web.servlet.MvcResult) LoginUser(com.hb0730.boot.admin.security.model.LoginUser) Result(com.hb0730.boot.admin.domain.result.Result) MvcResult(org.springframework.test.web.servlet.MvcResult) Test(org.junit.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Aggregations

User (com.hb0730.boot.admin.security.model.User)13 List (java.util.List)4 MenuEvent (com.hb0730.boot.admin.event.menu.MenuEvent)3 LoginException (com.hb0730.boot.admin.exceptions.LoginException)3 TreeMenuDTO (com.hb0730.boot.admin.project.system.menu.model.dto.TreeMenuDTO)3 UserDTO (com.hb0730.boot.admin.project.system.user.model.dto.UserDTO)3 UserDetails (org.springframework.security.core.userdetails.UserDetails)3 PermissionEntity (com.hb0730.boot.admin.project.system.permission.model.entity.PermissionEntity)2 LoginUser (com.hb0730.boot.admin.security.model.LoginUser)2 HttpServletRequest (javax.servlet.http.HttpServletRequest)2 SneakyThrows (lombok.SneakyThrows)2 Test (org.junit.Test)2 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)2 UsernamePasswordAuthenticationToken (org.springframework.security.authentication.UsernamePasswordAuthenticationToken)2 MvcResult (org.springframework.test.web.servlet.MvcResult)2 RequestAttributes (org.springframework.web.context.request.RequestAttributes)2 ServletRequestAttributes (org.springframework.web.context.request.ServletRequestAttributes)2 UpdateWrapper (com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper)1 ClassDescribe (com.hb0730.boot.admin.annotation.ClassDescribe)1 Log (com.hb0730.boot.admin.annotation.Log)1