我正在尝试将带有Spring Security的防止蛮力身份验证尝试应用到我也使用Spring Boot的Java项目中。但是,有一部分使用了web.xml
,但我的项目中没有web.xml
。那么,是否可以将这种方法应用到没有web.xml
的Spring Boot项目中?
我还试图添加它对maven的依赖,但似乎没有。那么,我该如何应用呢?或者,您可以为Java Spring Boot项目推荐类似的方法吗?我看着贝尔东,但没有。知道吗?
更新:另一方面,我实现了除web之外的所有类。xml,我认为可能没有必要使用web。xml,因为我已经正常地将登录请求传递给了我的服务。
但是,我的服务没有检测到失败的登录尝试。我应该从userR调用一些方法epository.findByUsername()
方法找不到用户吗?有什么想法吗?
注意:本文还有一个GitHubhttps://github.com/Baeldung/spring-security-registration/tree/master/src/main/java/com/baeldung/security.
@Service
@RequiredArgsConstructor
public class LoginServiceImpl implements LoginService {
private final UserService userService;
private final UserRepository userRepository;
private final TokenService tokenService;
private final PasswordEncoder passwordEncoder;
private final LoginAttemptService loginAttemptService;
private final HttpServletRequest request;
@Override
@LogExecution
@Transactional
public UserTokenDTO login(final LoginRequest request)
throws JsonProcessingException, JOSEException {
String ip = getClientIP();
if (loginAttemptService.isBlocked(ip)) {
throw new RuntimeException("blocked");
}
final User user = userRepository.findByUsername(request.getEmail())
.orElseThrow(InvalidCredentialsException::new);
final var userDTO = userService.findByUuid(user.getUuid());
final var tokenDTO = tokenService.generateTokens(userDTO, true);
return new UserTokenDTO(userDTO, tokenDTO);
}
private String getClientIP() {
String xfHeader = request.getHeader("X-Forwarded-For");
if (xfHeader == null){
return request.getRemoteAddr();
}
return xfHeader.split(",")[0];
}
}
如果你没有网络。xml,您必须在spring配置包中创建这样的类
@WebListener
public class YourContextListener extends RequestContextListener {
[...]
}
如果Spring没有检测到它,您还可以添加@Configuration
注释。
不幸的是,我无法发表评论(声誉不够),但在下面的链接中解释了为什么您无法捕获authenticationfailurelistener,您必须使用自定义的AuthenticationFailureHandler(正如Pilpo所说)。
Spring BadCredentials事件未触发
这并不是: 唯一的区别是user/searchuser和group/searchgroup 当我尝试应用后者时,它只会给我一个错误: 关于为什么策略适用于用户而不是组,有什么想法吗?
问题内容: 我使用Gridlayout在一行中放置4个元素。首先,我有一个JPanel,一切正常。对于行数变大并且必须向下滚动的情况,我做了一些更改。现在我添加了一个。我使用了相同的代码,现在我只是将元素添加到的视口中,但是现在却遇到了这个异常,我也不知道为什么。为什么不应该不知道Gridlayout的原因? 这是代码: 我根据编译器标记了导致问题的行。我不明白为什么,用相同的代码可以正常工作。我
我想知道gradle build如何应用于现有的多java项目,这些项目没有预期的目录结构——src/main/java等等? 提前谢谢你,
我需要只分析根项目,忽略嵌套的子模块,但它是d 所以我有这样的层次结构: 我的配置设置.gradle 我需要只分析根项目,忽略嵌套子模块,但我得到了: 然后我尝试添加多模块配置: 但在UI上得到消息:尚未执行任何分析 只有当我从设置中删除子项目的定义时,它才起作用。渐变,并删除所有子模块配置
问题内容: 我收到此异常: 您可以在https://travis-ci.org/ilopezluna/japan-at- home/builds/37866955 上查看更多信息 我执行测试期间会抛出此异常。但是我无法在我的本地主机上重现它,所以我总是能成功建立一个:S 问题答案: 我花了两天时间,但我相信我终于解决了这个问题。在我的课堂上,我有以下方法: 我用一种方法代替了该方法: 现在一切正常
我无法构建gradle项目,即使我编辑gradle属性,我也会得到以下错误: 我该如何解决这个问题?