gpt4 book ai didi

go - 在 Iris Framework 的 POST 方法中重定向

转载 作者:数据小太阳 更新时间:2023-10-29 03:12:21 24 4
gpt4 key购买 nike

我试图在 POST 方法中从登录页面重定向到主页,但在单击提交按钮后表单没有重定向到任何页面。

我正在使用 Iris Framework 的 MVC 结构和 Ctx.Redirect 方法来重定向到所需的页面,但它不起作用。

// login_controllers.go
package controllers

import (
"github.com/kataras/iris/mvc"
"github.com/kataras/iris"
"fmt"
)

type LoginFormData struct {
Email string
Password string
}


type LoginController struct {
mvc.C
}

func (c *LoginController) Get() mvc.Result {
return mvc.View{
Name: "login.html",
}
}

func (c *LoginController) Post() {
userLoginData := LoginFormData{}
err := c.Ctx.ReadForm(&userLoginData)
if err != nil {
c.Ctx.StatusCode(iris.StatusInternalServerError)
c.Ctx.WriteString(err.Error())
}

if userLoginData.Email == "teste@teste.com" && userLoginData.Password == "123" {
c.Ctx.Redirect("/", iris.StatusSeeOther)

fmt.Printf("UserInner: %#v", userLoginData)
c.Ctx.Writef("UserInner: %#v", userLoginData)
}
}

表单 HTML 代码为:

<form class="m-login__form m-form" action="/login" method="post">
<div class="form-group m-form__group">
<input class="form-control m-input" type="text" placeholder="Email" name="Email" autocomplete="off">
</div>
<div class="form-group m-form__group">
<input class="form-control m-input m-login__form-input--last" type="password" placeholder="Password" name="Password">
</div>
<div class="row m-login__form-sub">
<div class="col m--align-left">
<label class="m-checkbox m-checkbox--focus">
<input type="checkbox" name="remember">
Remember me
<span></span>
</label>
</div>
<div class="col m--align-right">
<a href="javascript:;" id="m_login_forget_password" class="m-link">
Forgotten password ?
</a>
</div>
</div>
<div class="m-login__form-action">
<button id="m_login_signin_submit" class="btn btn-focus m-btn m-btn--pill m-btn--custom m-btn--air">
Login
</button>
</div>
</form>

在 Iris Framework/Go 中无法在 POST 方法中重定向吗?

最佳答案

正如@mkopriva 所说,您必须调用 .Redirect 并从函数体返回,Redirect 应该是最后一次调用,因为它将状态代码和 header 位置发送回客户端,您无需编写任何其他内容,浏览器/客户端将重定向并写入重定向路径的内容。

尽管 iris.StatusSeeOther(http 状态代码:303)适用于 iris 存储库中的 mvc 示例,您可能想尝试其他状态并检查是否有效(清除每个浏览器的缓存尝试任何情况),例如 iris.StatusTemporaryRedirect(http 状态代码:307)或在 google 上搜索更适合您需要的正确重定向状态代码。

请看https://github.com/kataras/iris/tree/master/_examples

关于go - 在 Iris Framework 的 POST 方法中重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48037167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com