为了在控制器方法上使用[Authorize]属性后保留帖子数据,然后控制器方法将用户重定向到登录页面,然后在成功验证后将用户重定向到他们打算去的地方 - 如何这样做了吗?默认情况下不会转发原始表单提交。对之前发布的回复说:
您需要将表单值和RedirectUrl序列化为隐藏字段。 身份验证后反序列化隐藏字段中的数据并根据RedirectUrl的值重定向。 您需要一个自定义的Authorize类来处理这个问题。
我的问题是 - 有什么例子可以进一步指出我正确的方向吗?是的,我可以在控制器类中添加[Serialize]标签,但我无法弄清楚如何创建自定义Authorize类会有所帮助?我在网上看到了很多关于创建自定义Authorize类的资料,但在哪里可以进行反序列化?如果你可以深入一两级,这将有很大帮助。我是新手。
(我会对以前的帖子发表评论,但我是网站的新手,并没有积累足够的积分。我也会发布其他帖子的链接,但它说新用户也无法显示链接!)< / p>
答案 0 :(得分:2)
您可以创建一个自定义授权属性,将表单发布值存储在会话字典中,然后在授权完成后,您可以从会话字典中重新定位值。
这是一个例子:
public class CustomAuth:AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var form = filterContext.HttpContext.Request.Form;
if (form.HasKeys()) {
foreach(var key in form.AllKeys)
{
filterContext.HttpContext.Session[key]= form[key];
}
}
base.OnAuthorization(filterContext);
}
}
如您所见,在授权之前,所有表单值都存储在会话中 授权完成后,您可以恢复所有值。
[CustomAuth()]
public ActionResult Admin()
{
// supposing you had a from input with the name "Name"
string Name = Session["Name"] ?? string.Empty;
return View();
}