代码之家  ›  专栏  ›  技术社区  ›  jwaliszko

ASP.NET MVC表单验证部分的配置问题

  •  21
  • jwaliszko  · 技术社区  · 14 年前

    web.config 我定义了以下负责表单验证的部分:

    <authentication mode="Forms">
        <forms 
            loginUrl="~/Account/LogOn" 
            name=".VNK" 
            protection="All" 
            timeout="43200" 
            cookieless="UseCookies" />
    </authentication>
    

    ~/Account/LogOn .

    当我尝试使用以下方法获取登录url时:

    FormsAuthentication.Initialize();
    string loginUrl = FormsAuthentication.LoginUrl; 
    

    我收到: /VNK/site/Account/Login

    web.config配置 ?

    更新 这里有个问题。问题是 LoginUrl 财产 FormsAuthentication 类不反映web.config中的值。意思是如果我改变 loginUrl FormsAuthentication.LoginUrl 仍然具有“/VNK/site/Account/Login”的值。为什么?

    8 回复  |  直到 11 年前
        1
  •  27
  •   jwaliszko    12 年前

    我认为在ASP.netmvc3beta中有一个bug。此问题不会出现在以前版本的ASP.NET MVC中。

    如果有人想重播这个错误,他应该遵循以下步骤:

    。下载 mvc framevork .

    2个 。新建 ASP.NET MVC 3 Web应用程序

    .Applay公司 Authorize About 行动 HomeController

    [Authorize]
    public ActionResult About()
    {
       return View();
    }  
    

    4个 关于 点击操作 标签。您将收到服务器错误,因为应用程序正在尝试将您重定向到以下URL:

    http://localhost:[port_num]/Account/Login?ReturnUrl=%2fHome%2fAbout

    显然没有 登录 查看。有 查看。登录操作的Url在untouched web.config中定义:

    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    

    更新:

    我是对的,里面有个虫子 . 从 known issues :

    <add key="autoFormsAuthentication" value="false" />
    

    更新2:

    亚历山大·普罗科菲耶夫注意到 寻找另一个设置。所以你需要这条线:

    <add key="loginUrl" value="~/LogOn" />

        2
  •  1
  •   Karan Bhandari    12 年前

    如果您有权访问IIS,则追加一个新应用程序,并通过双击它在“应用程序池”部分中启用ASP.NET“集成管道”。

    如果宿主提供程序不允许您访问IIS, 然后登录到控制面板。

    • 管道内衬。
    • 将应用程序设置为虚拟目录 (对我有效)
        3
  •  1
  •   Vinnie    11 年前

    WebMatrix.*.dll 从web项目中的Bin文件夹。自从我的asp.net项目将我的登录重定向到mvc样式的url后,我就为它做了这项工作。

        4
  •  0
  •   Community dbr    7 年前

    MVC4的最新答案,从本页大量借用 Request redirect to /Account/Login?ReturnUrl=%2f since MVC 3 install on server

    <appSettings>
       ...
       <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
    ...
    
    <authentication mode="Forms">
          <forms loginUrl="~/Account/LogOn" timeout="43200" /> <!--43,200 in minutes - 30 days-->
    </authentication>
    
        5
  •  0
  •   Brian    10 年前

    在appSettings中输入以下内容:

    <add key="loginUrl" value="~/Account/LogOn" />
    

    您可以从表单身份验证配置中清空loginUrl。

        6
  •  0
  •   ChrisFox    8 年前

    我从web.config中删除了以下内容

    <remove name="FormsAuthentication" />
    

    然后一切似乎都正常了。在我创建项目时,默认情况下已添加此文本。

        7
  •  -1
  •   Lazarus    14 年前

    波浪号(~)表示“我的网站的根”,因此您不必一直使用 .. \ LoginUrl 以编程方式。我不确定为什么要检索LoginUrl,正常情况下,IIS会在用户试图访问未经身份验证的页面时自动将其重定向到LoginUrl。

        8
  •  -1
  •   Kalle    14 年前

    我认为服务器无法确定~在本例中的含义,请尝试为登录页提供更直接的url,例如/Account/LogOn。

    也许你会在这里找到有用的东西 http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx