【问题标题】:Change bootsrap navbar text with asp.net code behind使用 asp.net 代码更改引导导航栏文本
【发布时间】:2016-05-07 13:48:38
【问题描述】:

我的想法是当用户登录时“登录”和“注册”将不再显示,而是在导航栏上显示用户名。

标记:

<ul class="nav navbar-nav">
  <li>
    <a href="#">Register<span class="glyphicon glyphicon-user"</span></a>
   </li>
   <li id="LoginBTN">
     <a href="#">Log in<span class="glyphicon glyphicon-log-in"></span></a>
   </li>
</ul>

后面的代码:

protected void BTNLogIn_Click(object sender, ImageClickEventArgs e)
{
    SqlMyName SqlUser= new SqlMyName ();
    DataSet DsUser = new DataSet();
    string StUser = "SELECT TblUsers.User_Name, TblUsers.Pass FROM TblUsers WHERE (((TblUsers.User_Name)= '" + TXTUserName.Text + "') AND ((TblUsers.Pass)= '" + TXTPass.Text + "'));";
    DsUser = SqlUser.chkData(StUser);
    if (DsUser.Tables[0].Rows.Count > 0)
    {
        string StShowFname = "SELECT TblUsers.Fname FROM TblUsers WHERE (((TblUsers.User_Name)= '" + TXTUserName.Text + "'));"; 
        DataSet DsShowFname = SqlUser.chkData(StShowFname);

        //How can I unshow or change text of <li>?
     } 
} 

后面的代码应该怎么做?

【问题讨论】:

  • 是的,你可以。这回答了你的问题,对吧?那么你真正的问题是什么?你有没有做过任何研究,看看如何判断用户是否从后面的代码登录,或者如何从后面的代码中与 DOM 交互?
  • @mason 我的问题是如何使用后面的代码来做到这一点。我知道如何检查用户是否登录,但是我该怎么办?如何更改文本或使
  • 之一消失?
  • 请编辑问题,使其显示被问到的实际问题,并显示您如何检查以确保用户是否使用隐藏代码登录。这使您的问题变得清晰,并隔离了您想要了解的特定部分。当你在做的时候,修正标题:没有“bootsrap”这样的东西,你的标题应该准确地反映你的问题,而不仅仅是说明你正在使用什么技术。
  • 标签: c# asp.net twitter-bootstrap webforms


    【解决方案1】:

    您的代码存在许多明显的问题。

    让我们从安全开始,因为这应该始终是您的第一要务。您正在服务器中以明文形式存储密码。任何可以访问您的服务器的攻击者现在都可以轻松地使用这些用户帐户登录。而且由于用户经常在我的网站上使用相同的用户名和密码,因此您确实对您的用户造成了极大的伤害。切勿在数据库中以明文形式存储密码。相反,您应该以一种方式对密码进行散列和加盐。这意味着攻击者将难以检索实际密码。为确保用户的凭据有效,您可以对其提供的密码应用相同的散列,并将其与散列值进行比较。如果它们匹配,则用户具有正确的密码,您可以允许他们登录。

    其次,用户可以轻松地对您的数据库执行 SQL 注入攻击,从而使他们能够窃取和/或操纵数据。您需要使用parameterized queries

    您的标识符名称与标准 .NET 命名约定不匹配。当您与他人共享代码时,例如在 Stack Overflow 上,这会变得非常明显,并使您的代码更难阅读。函数名使用 PascalCase。局部变量使用 camelCase。不要使用缩写。

    要显示或隐藏服务器端控件,您可以使用.Visible 属性。要使控件“服务器端”,您可以将runat="server" 属性添加到它们的标记中。将 Visible 属性设置为 false 将导致 HTML 不会为该控件呈现,因此客户端将看不到它。

    标记

    <ul class="nav navbar-nav">
      <li runat="server" id="RegisterButton">
        <a href="#">Register<span class="glyphicon glyphicon-user"</span></a>
       </li>
       <li id="LoginBTN" runat="server">
         <a href="#">Log in<span class="glyphicon glyphicon-log-in"></span></a>
       </li>
    </ul>
    

    后面的代码:

    RegisterButton.Visible = false;
    LoginBTN.Visible = false;
    

    【讨论】:

    • 感谢您的帮助,它正在工作。关于安全性,这是一个 scholl 项目,所以没关系,还是谢谢你。
    • @harel486 是的,这绝对很重要。如果您现在不学习实际的安全性,您打算什么时候学习?
    • @mason 有一个好点子。根据我的经验,我从来没有在学校真正被教导过参数化的重要性。如果您能在校外学习一些好的技巧,那么以后尝试重新学习东西时会省去很多麻烦。绝对是一个高质量的答案。大多数人不会花时间解释所有这些。
    【解决方案2】:

    我这样做了 .aspx

      <ul class="nav navbar-nav pull-right">
                    <li>
                        <p class="navbar-text">
                            <% =login %><li><% =logout %></li>
                        </p>
                    </li>
         </ul>
    

    .cs

    if (userLogintatus == true)
            {
     login = string.Format("Welcome " + (string)Session["Name"])
                logout = "<a  href='../Account/Logout.aspx' style='color: red;'>Logout</a>";
    
            }
    else logout = "";
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签