【问题标题】:Asp.net forms authenticationAsp.net 表单身份验证
【发布时间】:2009-11-30 13:34:18
【问题描述】:

在我的 web.config 我有这个:

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="Login.aspx" protection="All" path="/" timeout="30"/>
    </authentication>
    <sessionState timeout="20" />
</system.web>

<location path="admin">
    <system.web>
        <authorization>
             <deny users="*"/>
             <allow users="admin"/>
        </authorization>
    </system.web>
</location>

我有两个问题:

  1. 在我的管理员路径中,我只希望管理员用户具有访问权限,但我找不到执行此操作的方法。如何让只有管理员用户才能访问?

  2. 即使我尝试使用 cookie,用户也总是会被注销,因此他不应该被注销。在我的 login.aspx 中,当用户有效时,我有以下代码:

    FormsAuthentication.RedirectFromLoginPage(user, CheckBoxPersistCookie.Checked);
    

如何让用户保持登录状态?

【问题讨论】:

    标签: asp.net authentication forms-authentication


    【解决方案1】:

    尝试将&lt;allow&gt; 行放在&lt;deny&gt; 行之上。

    <system.web>
        <authentication mode="Forms">
                    <forms loginUrl="Login.aspx" protection="All" path="/" timeout="30"/>
        </authentication>
        <sessionState timeout="20" />
    </system.web>
    
    <location path="admin">
        <system.web>
            <authorization>
                 <allow users="admin"/>
                 <deny users="*"/>
            </authorization>
        </system.web>
    </location>
    

    【讨论】:

    • 啊,这很简单,但我只是认为你首先否认所有然后通过添加管理员来覆盖它会更符合逻辑? :-)
    • 在 ASP.NET 中,授权规则按优先级排列。
    • 是的,有一次也被我愚弄了一会儿。 .NET 看到拒绝 * 并在进入下一行之前踢所有人。
    【解决方案2】:

    据我了解,您的身份验证 cookie 有 30 分钟超时,会话 cookie 有 20 分钟超时。似乎会话将在 20 分钟后到期,因此也无法使用身份验证 cookie。
    如果您想让用户保持登录状态,这有点棘手。我知道可以使用 javascript 和不可见的 iframe 来实现它。例如,您需要每 5 分钟重新加载一次 iframe。您的会话将实时更新并更新本地 cookie。

    【讨论】:

    • 但是如果我希望用户在下次打开网站时登录呢?如果他今天登录,然后在没有注销的情况下关闭。那么如果他明天从同一台计算机打开网站,我仍然希望他登录。这就是我尝试使用 cookie 的原因,但我该如何实施呢?
    • 嗯,在这种情况下,您需要实现一些自动登录代码。但我想知道它有多安全。
    • 我的意思是 cookie 不安全。如果您的客户端代码检测到身份验证 cookie 存在并且用户未登录,您可以在 cookie 中保存一些哈希,然后尝试使用此哈希自动登录。
    • 我以为自动登录已经内置在 asp.net 身份验证中了?不是吗?
    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多