#java #spring #spring-boot #gradle #spring-security
#java #весна #весенняя загрузка #gradle #spring-безопасность
Вопрос:
Я создаю простую страницу входа и регистрации с помощью web security. Это AuthController.java выдает ошибку при импорте javax.validation.Не удается разрешить Valid. Я добавил зависимость в build.graddle и построил проект, а затем также выдал ту же ошибку.
package com.djamware.springsecuritymongodb.controllers;
import com.djamware.springsecuritymongodb.domain.User;
import com.djamware.springsecuritymongodb.services.CustomUserDetailsService;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResu<
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class AuthController {
@Autowired
private CustomUserDetailsService userService;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView login() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("login");
return modelAndView;
}
@RequestMapping(value = "/signup", method = RequestMethod.GET)
public ModelAndView signup() {
ModelAndView modelAndView = new ModelAndView();
User user = new User();
modelAndView.addObject("user", user);
modelAndView.setViewName("signup");
return modelAndView;
}
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public ModelAndView createNewUser(@Valid User user, BindingResult bindingResult) {
ModelAndView modelAndView = new ModelAndView();
User userExists = userService.findUserByEmail(user.getEmail());
if (userExists != null) {
bindingResult
.rejectValue("email", "error.user",
"There is already a user registered with the username provided");
}
if (bindingResult.hasErrors()) {
modelAndView.setViewName("signup");
} else {
userService.saveUser(user);
modelAndView.addObject("successMessage", "User has been registered successfully");
modelAndView.addObject("user", new User());
modelAndView.setViewName("login");
}
return modelAndView;
}
@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
public ModelAndView dashboard() {
ModelAndView modelAndView = new ModelAndView();
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
User user = userService.findUserByEmail(auth.getName());
modelAndView.addObject("currentUser", user);
modelAndView.addObject("fullName", "Welcome " user.getFullname());
modelAndView.addObject("adminMessage", "Content Available Only for Users with Admin Role");
modelAndView.setViewName("dashboard");
return modelAndView;
}
@RequestMapping(value = {"/","/home"}, method = RequestMethod.GET)
public ModelAndView home() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("home");
return modelAndView;
}
}
Код Build.gradle прилагается ниже. Здесь мне нужно добавить что-нибудь еще для импорта javax.validation?
plugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
id 'war'
}
group = 'com.djamware'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compile 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.4.1'
// https://mvnrepository.com/artifact/javax.validation/validation-api
compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
// https://mvnrepository.com/artifact/javax.transaction/javax.transaction-api
compile group: 'javax.transaction', name: 'javax.transaction-api', version: '1.3'
compile group: 'javax.persistence', name: 'persistence-api', version: '1.0'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
test {
useJUnitPlatform()
}
Комментарии:
1. Это для экспериментов или для реального использования? Обратите внимание, что вы можете просто добавить
Authentication auth
в качестве параметра метода, и Spring предоставит его вам.
Ответ №1:
implementation 'org.springframework.boot:spring-boot-starter-validation:2.4.0'
Ответ №2:
Просто используйте :
compile 'org.springframework.boot:spring-boot-starter-validation:2.3.0.RELEASE'
Комментарии:
1. javax.валидация. Valid недоступен, за исключением того, что все они доступны, как javax.validation. bootstrap, ограничения, группы, spi.