【问题标题】:Thymeleaf page is not redirecting to another pageThymeleaf 页面未重定向到另一个页面
【发布时间】:2020-07-03 14:05:19
【问题描述】:

我正在使用Spring-boot 和thymeleaf,我正在尝试创建一个注册页面,但我似乎无法从我的登录页面访问register.html

从控制器我有以下内容

@Controller
public class LoginController {

    private final UserService userService;

    @Autowired
    public LoginController(UserService userService) {
        this.userService = userService;
    }

    @RequestMapping(value = {"/login"}, method = {GET})
    public ModelAndView login() {
        return new ModelAndView("/login");
    }

    @RequestMapping(value = "/register", method = GET)
    public ModelAndView register() {
        System.out.println("register");
        return new ModelAndView("register").addObject(new User());
    }

对于我的登录页面,我有这个,它可以正常呈现而没有问题

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Log in</title>
        <meta
                content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
                name="viewport">
        <link rel="stylesheet"
              href="../static/style/bootstrap/bootstrap.min.css"/>
        <link rel="stylesheet"
              href="../static/style/font-awesome/font-awesome.min.css"/>
        <link rel="stylesheet" href="../static/style/ionicons/ionicons.min.css"/>
        <link rel="stylesheet" href="../static/style/adminlte/AdminLTE.min.css"/>
        <link rel="stylesheet" href="../static/style/skins/skin-yellow.css"/>
        <link rel="stylesheet" href="../static/style/custom.css"/>
    </head>
    <body class="hold-transition login-page">
        <div class="login-box">
            <div class="login-logo">
                <a href="login.html"><b>Login</b></a>
            </div>
            <div class="login-box-body">
                <p class="login-box-msg">Sign in</p>
                <form th:action="@{/login}" method="post">
                    <div class="form-group has-feedback">
                        <input type="email" class="form-control" placeholder="Email"
                               name="username"> <span
                            class="glyphicon glyphicon-envelope form-control-feedback"></span>
                    </div>
                    <div class="form-group has-feedback">
                        <input type="password" class="form-control" placeholder="Password"
                               name="password"> <span
                            class="fa fa-pencil form-control-feedback"></span>
                    </div>
                    <div class="form-group has-feedback">
                        <div class="col-md-4"></div>
                        <div class="col-md-8">
                            <button type="submit" class="btn btn-primary btn-block btn-flat"
                                    style="margin-bottom: 10px;">Sign In
                            </button>
                        </div>
                    </div>
                    <br>
                    <p class="mb-0">
                        <a th:href="@{/register}">Sign Up</a>
                    </p>
                    <p class="mb-0">
                        <a th:href="@{/forgotPassword}">I forgot my password</a><br>
                    </p>
                </form>
            </div>
            <div th:if="${param.error != null}">
                <div id="error">
                    <div class="box-body">
                        <div class="alert alert-danger alert-dismissible">
                            <button type="submit" class="close" data-dismiss="alert"
                                    aria-hidden="true">&times;
                            </button>
                            <h4>
                                <i class="icon fa fa-ban"></i>Login Failed!
                            </h4>
                            You have entered incorrect credentials please try again
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <script src="../static/js/jquery/jquery.min.js"></script>
        <script src="../static/js/bootstrap/bootstrap.min.js"></script>
        <script src="../static/js/adminlte/adminlte.min.js"></script>
    </body>
</html>

正如我所说,它工作正常

对于我的注册页面,我有这个

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Registration Page</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet"
              href="../static/style/bootstrap/bootstrap.min.css"/>
        <link rel="stylesheet"
              href="../static/style/font-awesome/font-awesome.min.css"/>
        <link rel="stylesheet" href="../static/style/ionicons/ionicons.min.css"/>
        <link rel="stylesheet" href="../static/style/adminlte/AdminLTE.min.css"/>
        <link rel="stylesheet" href="../static/style/skins/skin-yellow.css"/>
        <link rel="stylesheet" href="../static/style/custom.css"/>
    </head>
    <body class="hold-transition register-page">
        <div class="register-box">
            <div class="register-logo">
                <a href="register.html"><b>Registration</b></a>
            </div>

            <div class="card">
                <div class="card-body register-card-body">
                    <p class="login-box-msg">Register a new membership</p>
                    <form th:object="user" method="get">
                        <p>Show something</p>
                    </form>
                </div>
            </div>
        </div>
        <script src="../static/js/jquery/jquery.min.js"></script>
        <script src="../static/js/bootstrap/bootstrap.min.js"></script>
        <script src="../static/js/adminlte/adminlte.min.js"></script>
    </body>
</html>

但是当我在登录页面中点击&lt;a th:href="@{/register}"&gt;Sign Up&lt;/a&gt; 时,页面似乎只刷新并且不会进入注册页面,如您所见,我尝试在@ 的register() 方法中打印一些东西987654331@ 但即使这不是打印告诉我我的方法永远不会被击中,在浏览器 devtools 中仔细检查后,我看到register 页面正在返回302 状态,如图所示

我尝试在控制器中使用String 返回类型,但这也不起作用。 我还尝试在不向其发送任何对象的情况下获取该页面,但这不起作用。

我该如何解决这个问题?

【问题讨论】:

  • 您的安全配置中可能没有将/register 路径设置为permitAll()。

标签: java html spring-boot thymeleaf


【解决方案1】:

我发现了问题,在我的SecurityConfig 中我引用了错误的页面名称

               .antMatchers(
                        "/static/**",
                        "/forgot/*",
                        "/actuator/*",
                        "/register")//this was wrong

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 2015-08-14
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多