项目集成

本文介绍项目开始时的登录验证集成问题

登录集成

项目开始时,首先要解决登录的验证问题,通过实现CustomUserLoginRepository接口来解决这个问题:

@Component
public class CustomMyUserLoginRepository implements CustomUserLoginRepository {
    @Autowired
    private PasswordEncoder passwordEncoder;

    @Override
    public UserPrincipal loadUserByUsername(String username) throws UsernameNotFoundException {
      // 参考下面代码完成
      JpaUIMUser user = uimUserRepository.findByUserName(username);
      if (user != null) {
          UserPrincipalImpl principal = new UserPrincipalImpl(user.getUserName(), user.getPassword());
          // 根据需要,将额外的用户信息放到Attributes中
          // UserInfo userInfo = xxxx.getUserInfo(username);
          // principal.addAttribute("userInfo", userInfo);
          return principal;
      }
      // throw new UsernameNotFoundException("AbstractUserDetailsAuthenticationProvider.badCredentials");
          }

          @Override
          public void postValidateUserPrincipal(UserPrincipal principal) throws AuthenticationException {
              // TODO 可以校验凭据的合法性,非法则抛出异常
          }
}

登录日志集成

框架默认会把登录日志记录到框架的表中,但是高并发的生产环境建议实现下面的接口,可以把登录日志记录到您要存放的地方。实现类不受macula.properties的是否记录日志配置的影响

public interface CustomUserSessionHistoryPersistance {

    /**
     * 保存用户登录、修改密码的历史
     * @param userSessionHistory
     */
    void saveUserSessionHistory(UserSessionHistory userSessionHistory);
}

访问日志集成

框架默认会把访问日志记录到框架的表中,但是高并发的生产环境建议实现下面的接口,可以把登录日志记录到您要存放的地方。实现类不受macula.properties的是否记录日志配置的影响

public interface CustomAccessLogPersistance {

    void saveAccessLog(AccessLog accessLog);

}