gpt4 book ai didi

c# - 重定向到 nancyfx 发布

转载 作者:行者123 更新时间:2023-11-30 18:22:50 26 4
gpt4 key购买 nike

使用 nancyfx 是否可以使用发布数据重定向到另一种方法?

在我的示例中,在用户注册后我想自动执行登录(我知道还有其他方法可以实现此目的,我可以从 Post["/login"] 中提取代码并从两种方法中调用它,但这是一个一般性问题,我想知道这是否可能(也许我想重定向到另一个由另一个开发人员维护的模块,我不能只提取代码)。

这就是我想做的(伪代码)

return RedirectToModule<LoginModule>()
.WithFormsValue("username", model.UserName)
.WithFormsValue("password", model.Password);

这是一个包含两个模块的示例。

public class LoginModule : NancyModule
{
public LoginModule()
{
Get["/login"] = _ => {
return View["login"]; // return login view
}
Post["/login"] = _=> {
// 1. get model
var model = this.Bind<LoginViewModel>();
// 2. perform login
// ...
// 3. redirect to home
return Response.AsRedirect("~/");
};
}
}
public class RegisterModule : NancyModule
{
public RegisterModule()
{
Get["/register"] = _=> {
return View["register"]; // return register view
};
Post["/register"] = _ => {

// 1. get model
var model = this.Bind<RegisterModel>();
// 2. create new User
// ...
// 3. redirect To /login with post data (pseudocode)
return RedirectToModule<LoginModule>()
.WithFormsValue("username", model.UserName)
.WithFormsValue("password", model.Password);
};
}
}

最佳答案

您应该能够使用 307 临时重定向 来做到这一点,但要做到这一点,您必须“手动”设置重定向响应:

public class RegisterModule : NancyModule
{
public RegisterModule()
{
Get["/register"] = _=> {
return View["register"]; // return register view
};
Post["/register"] = _ => {
// 1. get model
var model = this.Bind<RegisterModel>();
// 2. create new User
// ...
// 3. redirect To /login with post data (pseudocode)
return
Negotiate
.WithStatusCode(HttpStatusCode.TemporaryRedirect)
.WithHeader("Location", "/login");
};
}
}

这告诉客户端使用相同的 HTTP 方法和相同的正文(包括表单值)向 Location header 中指示的 URL 重新提交请求。

如果你愿意,你可以在 Negotiator 上创建一个扩展来一次性做出这个回应:

public Negotiator WithTemporaryRedirect(this Negotiator self, string location) =>
self.Negotiate
.WithStatusCode(HttpStatusCode.TemporaryRedirect)
.WithHeader("Location", "/login");

关于c# - 重定向到 nancyfx 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33438383/

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