加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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]获取表单数据并再次呈现表单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读