asp.net-mvc – MVC在提交按钮单击后登录重定向后从表单发布数据
发布时间:2020-12-16 06:25:44 所属栏目:asp.Net 来源:网络整理
导读:如何在用户单击提交之前,如何使用不需要用户登录的表单,并在此时提交表单(如果用户已登录),否则将重定向到登录页面.用户登录成功后,提交原始表单?原始表单具有 input type =“file”元素也是,除非用户成功登录,否则不应上传文件. 解决方法 MVC处理这种情况.
如何在用户单击提交之前,如何使用不需要用户登录的表单,并在此时提交表单(如果用户已登录),否则将重定向到登录页面.用户登录成功后,提交原始表单?原始表单具有< input type =“file”>元素也是,除非用户成功登录,否则不应上传文件.
解决方法
MVC处理这种情况.只需将“[Authorize]”属性仅放在具有[HttpPost]的表单后置操作上.在用户未登录时发布表单时,他将被重定向到帐户控制器登录操作(/ Account / Login)并将呈现登录视图;这是因为它在web.config中设置了.除此重定向外,还添加了查询字符串参数“ReturnUrl = / orginalform”.然后,MVC登录操作执行登录并再次将用户重定向到原始表单.
更新:如果您需要保留表单数据(这不经过测试,仅编译),下面应该包含自定义属性的代码,该属性将捕获表单数据 public class CustomAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization( AuthorizationContext filterContext) { if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { string loginUrl = "/Account/Login"; //Get this from web.config instead of hardcode if (filterContext.HttpContext.Request != null) { loginUrl += "?ReturnUrl=" + filterContext.HttpContext .Request .Url .AbsoluteUri; foreach(var formData in filterContext.HttpContext.Request.Form) { loginUrl += "&"+formData.ToString(); } } filterContext.Result = new RedirectResult( loginUrl ); } } } 您可能需要对登录后期操作进行一些修改.返回表单获取操作也应该从uri字符串[FromUri]获取表单数据并再次呈现表单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net – 为什么当使用ADO.NET实体数据模型映射
- asp.net-mvc-5 – OWIN是否调用MVC(ASP.NET MVC)
- asp.net-mvc – 我的ASP.NET MVC应用程序是否正确
- asp.net-mvc – nhibernate:具有相同标识符值的
- C#进阶系列——WebApi 接口参数不再困惑:传参详
- asp.net-mvc – 从Session_Start调用异步方法
- 使用Typora写博客,图片即时上传,无需第三方图床
- 使用ASP.NET Web API进行OAuth Facebook身份验证
- asp.net – 得墨忒耳定律和OOP混淆
- asp.net-mvc – 上传文件并验证文件扩展名和文件
热点阅读