Форма входа, преобразовывающая тимелист в решение REST - PullRequest
0 голосов
/ 03 мая 2019

, поскольку я большой поклонник внешнего интерфейса и внутреннего интерфейса, я хотел бы преобразовать форму входа в систему из Thymeleaf в решение REST.Может ли кто-нибудь помочь мне с этим?Я получил следующий код:

@Controller
public class LoginController {

@GetMapping("/login")
public String login () {
    return "login";
}
}

и мою форму:

<!DOCTYPE html>
<html xmlns:th="http://thymeleaf.org">
<head>
  <title>Login</title>
</head>
<body>
<form action="" method="post">
<fieldset>
    <legend>Please Login</legend>
    <!-- use param.error assuming FormLoginConfigurer#failureUrl 
 contains the query parameter error -->
    <div th:if="${param.error != null}">
        Failed to login.
        <div th:if="${SPRING_SECURITY_LAST_EXCEPTION != null}">
            Reason: <span
                th:text="${SPRING_SECURITY_LAST_EXCEPTION.message}"> 
 </span>
        </div>
    </div>
    <!-- the configured LogoutConfigurer#logoutSuccessUrl is /login?logout and contains the query param logout -->
    <div th:if="${param.logout != null}">You have been logged out.</div>
    <p>
        <label for="username">Username</label> <input type="text"
                                                      id="username" name="username" />
    </p>
    <p>
        <label for="password">Password</label> <input type="password"
                                                      id="password" name="password" />
    </p>
    <div>
        <button type="submit" class="btn">Log in</button>
    </div>
</fieldset>

Моя идея состоит в том, чтобы преобразовать контроллер вREST один, а затем используйте AJAX, чтобы опубликовать JSON с именем пользователя и паролем.Это хорошее решение?Также по какому адресу его следует отправить?

1 Ответ

2 голосов
/ 03 мая 2019

Ну, это не очень хороший способ использовать тимилиф с контроллером REST.Поскольку ваша архитектура похожа, у вас будет одно клиентское приложение, которое вызывает ваше серверное приложение, состоящее из контроллера REST.Таким образом, ваш дизайн будет выглядеть следующим образом

(клиентское приложение) [thymeleaf pages -> client controller -> client service] => [REST controller -> Service ->repository] (серверное приложение)

Вы можете ссылаться здесь, если хотите использовать этот подход

В противном случае вы можете перейти сдругой подход, при котором у вас будет серверное приложение с контроллером REST и клиентское приложение с вашим клиентским кодом с вашей HTML-страницей, вызовами AJAX и логикой навигации.Этот подход будет похож на ваш клиентский код в Angular / React-подобной среде, а ваше серверное приложение будет иметь только ваши контроллеры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...