关于signin / signout,在asp.net中进行身份验证

时间:2011-07-20 07:12:51

标签: asp.net

我正在研究登录/注册模块(仅供参考,我只是一个简单的登录表单),数据流来自sql server,用于注册和登录,代码目前正常工作。 我想在我的代码中使用signin / signout功能。我已经创建了一个登录表单,用户可以登录,登录成功后,用户被重定向到default_page.aspx。 我的r& d代码如下:

<td width="122" align="right"><asp:LinkButton ID="LinkButton1" runat="server" 
            onclick="LinkButton1_Click">Sign Out</asp:LinkButton></td>

cs页面:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    //After click Log out we need to delete all session values


    Session.RemoveAll();
    Response.Redirect("userlogin.aspx");
}

从上面的代码你可以看到我只放了一个linkbutton,如果用户点击上面的链接按钮,用户就会退出并重定向到loginpage(这里是userlogin.aspx)。但是现在如果我试图更改(请参阅下面的aspx和.cs)作为signin | signout我收到错误:'System.Security.Principal.IPrincipal'不包含'IsAuthenticated'的定义且没有扩展名方法'IsAuthenticated'接受类型'System.Security.Principal.IPrincipal'的第一个参数可以找到(你是否缺少using指令或汇编引用?)

aspx页面:

<td width="122" align="right"><asp:LinkButton ID="LinkButtonSignInOut" runat="server" 
            onclick="LinkButton1_Click">""</asp:LinkButton></td>

.cs页面:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    //After click Log out we need to delete all session values
    if (User.IsAuthenticated)**//error is here**
        LinkButtonSignInOut.Text = "Sign Out";
    else
        LabelSignInOut.Text = "Sign In"; 

    Session.RemoveAll();
    Response.Redirect("userlogin.aspx");
}

任何建议???

谢谢!

1 个答案:

答案 0 :(得分:0)

检查以下代码,我写了评论

protected void LinkButton1_Click(object sender, EventArgs e)
{
    if (User.IsAuthenticated) **//error is here**
    if(User.Identity.IsAuthenticated) // this is correct code
         LinkButtonSignInOut.Text = "Sign Out";
    else
        LabelSignInOut.Text = "Sign In";

    Session.RemoveAll(); //
    Session.Abandon(); // Better to use this
    Response.Redirect("userlogin.aspx"); 
    // You are display assigning text in label and immediate after you are redirecting it to another page ??
}