4

我创建了一个登录页面,用户必须提供用户名和密码才能访问某些特定资源,他们可以在其中上传图像,或者只是编辑一些关于他们自己的描述。我的 web.config 文件如下所示:

    <authentication mode="Forms">
      <forms loginUrl="Secure/Login.aspx" defaultUrl="index.aspx" name=".ASPXFORMSAUTH" timeout="30"/>
    </authentication>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>

<location path="Secure">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

因此,当用户输入用户名和密码后,他将被重定向到 index.aspx 页面。根据用户是否登录,index.aspx 应该显示或隐藏一些内容。这是我检查他是否登录的方式:

bool isLoggedIn = HttpContext.Current.User.Identity.IsAuthenticated;  
    if (isLoggedIn) 
    {
        placeHolder2.Visible = true;
        ...
    }

现在的问题是:HttpContext.Current.User.Identity.IsAuthenticated; ALWAYS 返回 true,因此未经授权的人将看到应该隐藏的内容。

我不确定:HttpContext.Current.User.Identity.IsAuthenticated; 我刚刚搜索了“如何检查用户是否登录”,建议是:HttpContext.Current.User.Identity.IsAuthenticated;

我只希望登录的人查看私人内容。我该怎么做?如何使: HttpContext.Current.User.Identity.IsAuthenticated 仅在用户登录时返回 true?谢谢

4

3 回答 3

8
if (Request.IsAuthenticated) {.....}

根据一些评论进行编辑通过“表单”进行身份验证,请在此处查看

HttpContext.Current.User.Identity.IsAuthenticated // 如果使用基于表单的身份验证,则将是“表单” //“协商”正在使用集成的 Windows //等

如果使用 .net 4.5 并且您想要“SET”用户声明。推荐阅读ClaimsPrincipal

于 2013-08-01T23:52:04.667 回答
3

bool isLoggedIn = System.Web.HttpContext.Current.User.Identity.IsAuthenticated

于 2013-08-02T00:25:59.180 回答
0

我的编码是

bool val1 = (System.Web.HttpContext.Current.User != null) &&
    (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) &&
    (System.Web.HttpContext.Current.User.Identity.AuthenticationType.ToString() == "Forms");

用于识别具有域登录和登录表单的用户

于 2014-08-26T01:43:17.823 回答