Никаких действий при нажатии кнопки «Отправить», но это должно зарегистрировать пользователя - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать простую систему регистрации и входа. Когда я пытаюсь зарегистрировать пользователя, я предоставляю всю информацию для ввода, такую ​​как имя пользователя, пароль и пароль подтверждения, но когда я нажимаю кнопку отправки, он перенаправляет меня на / login, даже на страницу / welcome, как я объявил в контроллер. Когда я добавил простую отладку в контроллер в конкретном отображении, ничего не произошло. Я полагаю, что этот метод даже не выполняется, может кто-нибудь взглянуть на этот код и сказать мне, что здесь не так?


@Controller
public class UserController {

    private UserService userService;
    private SecurityService securityService;

    @Autowired
    public UserController(UserService userService, SecurityService securityService) {
        this.userService = userService;
        this.securityService = securityService;
    }

    @RequestMapping(value = "/registration", method = RequestMethod.GET)
    public String registration(Model model) {
//        model.addAttribute("user", new User());
//
        return "registration";
    }

    @RequestMapping(value = "/registration", method = RequestMethod.POST)
    public String registration(@RequestParam("username") String username, @RequestParam("password")
                               String password, @RequestParam("confirmPassword") String confirmPassword,
                               Model model, HttpServletRequest request) {

        User foundUser = userService.findByUsername(username);
        if (foundUser != null) {
            model.addAttribute("msgError", "That user already exists");
            return "registration";
        }

        if (username.equals("") || username.length() < 2) {
            model.addAttribute("msgError", "Wrong username");
            return "registration";
        }

        if (!password.equals(confirmPassword)) {
            model.addAttribute("msgError", "Passwords can not be different");
            return "registration";
        }

        User user = new User(request.getParameter("username"), request.getParameter("password"), request.getParameter("confirmPassword"));

        securityService.autoLogin(username, password);

        userService.addUser(user);
        model.addAttribute("msgSuccess", "User registered successfully");
        return "redirect:/welcome";
    }

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(Model model, String error, String logout) {
        if (error != null)
            model.addAttribute("msgError", "Your username and password is invalid");
        if (logout != null)
            model.addAttribute("msgError", "You have been logged out successfully");

        return "login";
    }
}

И JSP для регистрации, как показано ниже

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Watchers - Registration</title>
</head>
<body>
    <div class="container">
        <form method="POST" action="registration" class="sign-form">
            <h2 class="sign-form-heading">Create an new account</h2>
            <p><input type="text" name="username" /></p>
            <p><input type="text" name="password" /></p>
            <p><input type="text" name="confirmPassword" /></p>
            <input type="submit" value="Submit" />
        </form>
    </div>
</body>
</html>

1 Ответ

0 голосов
/ 11 июня 2019

я думаю, это из-за ваших форм action -значение.

попробуйте подготовить значение действия с помощью taglib Spring, в этом примере он получил префикс spring

<spring:url value="/registration" var="url"/>
<form method="POST" action="${url}" class="sign-form">

Редактировать:

, ссылаясь на ваш комментарий, я должен задать несколько вопросов:

как вы защищаете / защищаете свое веб-приложение с помощью Spring-Securityили ограничения безопасности в web.xml?

путь /registration также защищен / защищен?если это так и если ваш логин-config ссылается на /login, вы будете перенаправлены на /login

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