0

我有一个登录页面,后面的代码如下:

protected void btnLog_Click(object sender, EventArgs e)
{

    SqlConnection conn1 = new SqlConnection("Data Source=GATE-PC\\SQLEXPRESS;Initial Catalog=dbUsers;Integrated Security=True");
    conn1.Open();

    SqlCommand cmdd = new SqlCommand("select * from Users where UserName = @user AND Password = @pass", conn1);

    SqlParameter param = new SqlParameter();
    SqlParameter param1 = new SqlParameter();

    param.ParameterName = "@user";
    param1.ParameterName = "@pass";

    param.Value = txtuser.Text;
    param1.Value = txtpass.Text;

    cmdd.Parameters.Add(param);
    cmdd.Parameters.Add(param1);

    SqlDataReader reader = cmdd.ExecuteReader();

    if (reader.HasRows)
    {
        reader.Read();
        MessageBox("Login Successful");
        clear();
    }
    else
    {
        MessageBox("Invalid Username/Password");
    }

}

我有两个站点地图:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
                EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal" 
                DataSourceID="SiteMapDataSource1" StaticDisplayLevels="2" 
                onmenuitemdatabound="NavigationMenu_MenuItemDataBound">        
            </asp:Menu>      
            <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

            <div class="clear hideSkiplink">              
            <asp:Menu ID="Menu1" runat="server" CssClass="menu" 
                EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal" 
                DataSourceID="SiteMapDataSource2" StaticDisplayLevels="2" 
                onmenuitemdatabound="NavigationMenu_MenuItemDataBound">        
            </asp:Menu>      
            <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" SiteMapProvider="AdminSiteMapProvider"/>

我想要实现的是当用户未登录时 Menu1 将显示并且 NavigationMenu 将隐藏但如果用户登录 Menu1 将隐藏然后 NavigationMenu 将显示。

我正在使用带有 C# 的 asp.net。

4

2 回答 2

0

Firstly, you are probably better off using ASP.NET membership for this. From your example it looks like you are storing your passwords in plain text, which is bad. Take a read of this for how to set up asp.net membership.

Then, in order to achieve different a different view based on if the user is authenticated or not you can use the asp.net LoginView control like so:

<asp:LoginView ID="LoginView0" runat="server">
    <AnonymousTemplate>
        <asp:Menu ID="Menu1" runat="server" CssClass="menu" 
            EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal" 
            DataSourceID="SiteMapDataSource2" StaticDisplayLevels="2" 
            onmenuitemdatabound="NavigationMenu_MenuItemDataBound">        
        </asp:Menu>      
        <asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" SiteMapProvider="AdminSiteMapProvider"/>
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
            EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal" 
            DataSourceID="SiteMapDataSource1" StaticDisplayLevels="2" 
            onmenuitemdatabound="NavigationMenu_MenuItemDataBound">        
        </asp:Menu>      
        <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
    </LoggedInTemplate>
</asp:LoginView>

I hope this helps.

于 2013-06-09T08:41:35.063 回答
0
if (reader.HasRows)
{
        reader.Read();
        // set as user authenticated 
        FormsAuthentication.SetAuthCookie(txtuser.Text, true);
        MessageBox("Login Successful");
        clear();
}

在您的页面加载中

protected void Page_Load(object sender, EventArgs e)
{
    if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
    {
        Menu1.Visible = false;
        NavigationMenu.Visible = true;
    }
    else
    {
        Menu1.Visible = true;
        NavigationMenu.Visible = false;
    }
}

或者

protected void Page_Load(object sender, EventArgs e)
{
    bool isAuthenticated = System.Web.HttpContext.Current.User.Identity.IsAuthenticated;
    Menu1.Visible = !isAuthenticated;
    NavigationMenu.Visible =isAuthenticated;
}
于 2013-06-09T08:36:22.540 回答