如何检查用户是否已登录

Aom*_*Set 3 asp.net

我创建了一个登录页面,用户必须提供用户名和密码才能访问某些特定资源,他们可以上传图像,或者只编辑一些关于他们自己的描述.我的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>
Run Code Online (Sandbox Code Playgroud)

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

bool isLoggedIn = HttpContext.Current.User.Identity.IsAuthenticated;  
    if (isLoggedIn) 
    {
        placeHolder2.Visible = true;
        ...
    }
Run Code Online (Sandbox Code Playgroud)

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

我不确定:HttpContext.Current.User.Identity.IsAuthenticated; 我只是用谷歌搜索"如何检查用户是否登录",建议如下:HttpContext.Current.User.Identity.IsAuthenticated;

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

phi*_*ady 7

if (Request.IsAuthenticated) {.....}
Run Code Online (Sandbox Code Playgroud)

根据一些评论进行编辑通过"表单"进行身份验证,请点击此处

HttpContext.Current.User.Identity.IsAuthenticated //如果使用基于表单的表单//"Negotiate"正在使用Windows集成//等将是"表单"

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