Springboot"圆形视图路径"和"错误解决模板"

时间:2018-02-09 13:22:07

标签: maven spring-boot spring-security spring-data-jpa

我正在尝试用一个小页面实现JWT,我遇到了问题"圆形视图路径"。我读到它可以通过spring-boot-starter-thymeleaf解决,但后来我得到了#34;错误解析模板"

UserController中

@Controller
public class UserController {
private UserRepository userRep;
private BCryptPasswordEncoder bCryptPasswordEncoder;


public UserController (UserRepository applicationUserRepository,
                      BCryptPasswordEncoder bCryptPasswordEncoder) {
    this.userRep = applicationUserRepository;
    this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}

// Especificamos el endpoint para realizar el registro, y el parámetro
// necesario (tipo Usuario) que debe de estar completamente formado
@RequestMapping(value = "/registraUsuario", method=RequestMethod.POST)
public void registraUsuario (@RequestBody Usuario usuario) {
    usuario.setPassword(bCryptPasswordEncoder.encode(usuario.getPassword()));
    userRep.save(usuario);
    }
}

UserRepository

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
   public interface UserRepository extends JpaRepository<Usuario, Long> {
   Usuario findByEmail(String mail);
}

的UserDetailsS​​ervice

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
private UserRepository applicationUserRepository;

public UserDetailsServiceImpl(UserRepository applicationUserRepository) {
    this.applicationUserRepository = applicationUserRepository;
}

@Override
public UserDetails loadUserByUsername(String mail) throws UsernameNotFoundException {
    Usuario applicationUser = applicationUserRepository.findByEmail(mail);
    if (applicationUser == null) {
        throw new UsernameNotFoundException(mail);
    }
    return new User(applicationUser.getEmail(), applicationUser.getPassword(), emptyList());
   }
}

任何想法。提前致谢

1 个答案:

答案 0 :(得分:0)

解决。似乎问题是UserController有@RequestMapping(value =&#34; / registraUsuario&#34;,它与SecurityConstants文件中的SIGN_UP_URL相同

public class SecurityConstants {
    public static final String SECRET = "SecretKeyToGenJWTs";
    public static final long EXPIRATION_TIME = 864_000_000; // 10 days
    // Cabeceras para probar con el postman
    public static final String TOKEN_PREFIX = "Bearer ";
    public static final String HEADER_STRING = "Permiso";
    // Aquí iría la URL donde se registra el ususario en nuestra página
    public static final String SIGN_UP_URL = "/registraUsuario";
}

这就是创造循环。我更改了SIGN_UP_URL =&#34; / usuario / registraUsuario&#34;的名称,并将@RequestMapping(&#34; / usuario&#34;)添加到userController,现在没有问题。最后,这是我已经更改的那两个文件的最终代码

<强> UserController中

@Controller
@RequestMapping("/usuario")
public class UserController {
    private UserRepository userRep;
    private BCryptPasswordEncoder bCryptPasswordEncoder;


    public UserController (UserRepository applicationUserRepository,
                          BCryptPasswordEncoder bCryptPasswordEncoder) {
        this.userRep = applicationUserRepository;
        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    }

    // Especificamos el endpoint para realizar el registro, y el parámetro
    // necesario (tipo Usuario) que debe de estar completamente formado
    @RequestMapping(value = "/registraUsuario", method=RequestMethod.POST)
    @ResponseStatus(HttpStatus.OK)
    public void registraUsuario (@RequestBody Usuario usuario) {
        usuario.setPassword(bCryptPasswordEncoder.encode(usuario.getPassword()));
        userRep.save(usuario);
    }
}

<强> SecurityConstants

public class SecurityConstants {
    public static final String SECRET = "SecretKeyToGenJWTs";
    public static final long EXPIRATION_TIME = 864_000_000; // 10 days
    // Cabeceras para probar con el postman
    public static final String TOKEN_PREFIX = "Bearer ";
    public static final String HEADER_STRING = "Permiso";
    // Aquí iría la URL donde se registra el ususario en nuestra página
    public static final String SIGN_UP_URL = "/usuario/registraUsuario";
}

希望这有帮助。