【问题标题】:form authentication with mvc framework使用 mvc 框架进行表单身份验证
【发布时间】:2013-10-09 20:30:21
【问题描述】:

我正在尝试使用 mvc 框架进行表单身份验证,但是如果我登录并从页面复制 url 和注销并在其他浏览器或选项卡中打开它应该转到登录页面但它被重定向到需要首先进行身份验证的页面意味着无需身份验证直接进入登录页面 .任何帮助将不胜感激。

这是我的网络配置设置:

 <!--Using forms authentication-->
        <location path="Content">
            <system.web>
                <authorization>
                    <allow users="*" />
                </authorization>
            </system.web>
        </location>

        <!-- allow any user to see the login controller -->
        <location path="~/Developer/Index">
            <system.web>
                <authorization>
                    <allow users="*" />
                </authorization>
            </system.web>
        </location>

               <authentication mode="Forms">
                <forms name=".ASPXFORMSAUTH" loginUrl="~/Developer/Index" timeout="2880" />
            </authentication>

And in my controller login Action method i used 



     [HttpPost]
        public ActionResult LoginAPI(LoginAPIFormModel loginapp)
        {
            if (!ModelState.IsValidField("username") || !ModelState.IsValidField("pwd"))
            {
                if (!ModelState.IsValidField("username"))
                {
                    ModelState.AddModelError("username", "Invalid Email");
                }
                else
                {
                    ModelState.AddModelError("Incomplete", "Please fill out each field");
                }


                return View(loginapp);
            }

            try
            {

                var context = new ndCorp_SiteEntities();
                var Hashpwd = CreateHash(loginapp.pwd);
                var res = context.DevUserInfoes.Where(i => i.UserName == loginapp.username && i.USerPwd == Hashpwd).FirstOrDefault() ;
 TempData["mode"] = "LoginAPI";

                FormsAuthentication.SetAuthCookie(loginapp.username, false);
                return RedirectToAction("SuccessView");
 }

            catch (Exception ex)
            {
                Console.Write(ex);
                return View(loginapp);
            }


        }

这是登录后实际重定向到用户页面的javascript代码:

 if (@Html.Raw(Json.Encode(TempData["mode"])) == "LoginAPI")
       {
            parent.closeFancybox(); 
            //setTimeout(parent.closeFancybox(), 1000) 
            //window.top.closeFancybox();
             var url = '@Html.Raw(Url.Action("ManageApps", "Developer", new { username =@Html.Raw(Json.Encode(TempData["uname"]))} ))';
             url =  url.replace(/%22/g,'');
            parent.location.href = url;
        }

【问题讨论】:

  • 尝试更具体一些,并可能发布一些代码。您能否描述一下您所说的“不工作”、任何错误代码或错误消息是什么意思?
  • 我再次使用更多代码发布了我的查询...我没有收到任何错误,但是如果我在登录后复制 url,则该 url 在任何浏览器或选项卡中都可以在没有身份验证的情况下使用,例如。如果我从我的应用程序中登录,但它的打开 localhost:54971/en-us/Developer/ManageApps?username=test

标签: asp.net-mvc form-authentication


【解决方案1】:

尝试将 [Authorize] 属性放置到您的控制器或视图中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2017-12-05
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多