如何为我的网站创建两个管理员用户?
How can I create two admin users for my website?
我的网站目前有一个名为 "SYSTEM" 的管理员用户,该用户拥有该网站的完全访问权限,并且能够 add/delete 用户凭据。我创建了另一个名为 "trainer" 的用户,它具有相同的权限级别。但是,当我测试我的 webapp 时,"trainer" 用户受到限制,无法访问 add/delete 用户。我的代码在下面,有人可以帮忙吗?
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringBuilder SB = new StringBuilder();
UserModel a = (UserModel)ViewData["UserMaint"];
List<String> UserList = a.getUserList();
List<String> CountryList = a.getCountryList();
SB.Append("<input type=\"hidden\" id=\"UserMaintActionURL\" value=\"");
// SB.Append("<input type=\"hidden\" id=\"User\" value=\"");
// SB.Append(ApplicationUtility.FormatURL("/Stock/Login"));
SB.Append("\" />");
litLoginActionHidden.Text = SB.ToString();
if (ViewData["ERROR"] != null)
{
errormsg.Text = ViewData["ERROR"].ToString();
}
else
{
errormsg.Text = " ";
}
SB = new StringBuilder();
SB.Append("<input type=\"hidden\" id=\"User\" name=\"User\" value=\"" + a.GetCurrentUser().ToUpper() + "\" />");
SB.Append("<select name=\"textUser\" id name=\"textUser\" onchange=\"onChangeUser()\">");
foreach (String element in UserList)
{
if (a.GetCurrentUser().ToUpper()==element.ToUpper()||a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
{
if (a.GetUser().ToUpper() == element.ToUpper())
{
SB.Append("<option value=\"" + element + "\" selected >" + element + "</option>");
}
else
{
SB.Append("<option value=\"" + element + "\">" + element + "</option>");
}
}
}
SB.Append("</select>");
litUserMaint.Text = SB.ToString();
SB = new StringBuilder();
SB.Append("<select name=\"textCntry\" id name=\"textCntry\" >");
if (a.GetCurrentCntry().ToUpper() == "ALL"||a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
{
SB.Append("<option value=\"ALL\">ALL</option>");
}
foreach (String element in CountryList)
{
if (a.GetCurrentCntry().ToUpper() == element.ToUpper() || a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
{
if (a.GetCountry().ToUpper() == element.ToUpper())
{
SB.Append("<option value=\"" + element + "\" selected >" + element + "</option>");
}
else
{
SB.Append("<option value=\"" + element + "\">" + element + "</option>");
}
}
}
SB.Append("</select>");
litCountryList.Text = SB.ToString();
if (a.GetErrorMessage().Trim() != "")
{
StringBuilder ES = new StringBuilder();
ES.Append("<table border=1><tr><td class=\"ErrorText\">");
ES.Append(a.GetErrorMessage().ToString());
ES.Append("</td></tr></table>");
errormsg.Text = ES.ToString();
}
else
{
errormsg.Text = " ";
}
您的代码中存在逻辑错误。
if (a.GetCurrentUser().ToUpper()==element.ToUpper()||a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
string a.GetCurrentUser().ToUpper() == "trainer"
永远不会为真。您正在将左侧的大写字符串评估为小写字符串。
要修复它,您可以写:
a.GetCurrentUser().ToUpper() == "TRAINER"
或者:
a.GetCurrentUser().Equals("trainer", StringComparison.InvariantCultureIgnoreCase))
我还建议在循环开始时只使用 运行 GetCurrentUser
,然后如果它是一个昂贵的评估(即使它不是)使用结果,因为你不不需要用同一个方法多次获取。
关于你的代码的主题;它还有一些其他问题:
您允许在网站上显示没有 HTML 编码的用户名。如果该用户名曾被显示给其他用户,则有人可以制作一个恶意用户名,允许他们执行 XSS 或 SQL 注入攻击(XSS 肯定,SQL 注入在这种情况下,如果你也是错误地没有参数化您的 SQL 输入)。\
您的代码中发生了很多事情,尝试手动构建 HTML 既不好玩。还有其他方法;特别是使用视图。在不了解更多关于您的设置的情况下,除了 "Don't do what you're doing" 如果您曾经在工作环境中,我无话可说。
我的网站目前有一个名为 "SYSTEM" 的管理员用户,该用户拥有该网站的完全访问权限,并且能够 add/delete 用户凭据。我创建了另一个名为 "trainer" 的用户,它具有相同的权限级别。但是,当我测试我的 webapp 时,"trainer" 用户受到限制,无法访问 add/delete 用户。我的代码在下面,有人可以帮忙吗?
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringBuilder SB = new StringBuilder();
UserModel a = (UserModel)ViewData["UserMaint"];
List<String> UserList = a.getUserList();
List<String> CountryList = a.getCountryList();
SB.Append("<input type=\"hidden\" id=\"UserMaintActionURL\" value=\"");
// SB.Append("<input type=\"hidden\" id=\"User\" value=\"");
// SB.Append(ApplicationUtility.FormatURL("/Stock/Login"));
SB.Append("\" />");
litLoginActionHidden.Text = SB.ToString();
if (ViewData["ERROR"] != null)
{
errormsg.Text = ViewData["ERROR"].ToString();
}
else
{
errormsg.Text = " ";
}
SB = new StringBuilder();
SB.Append("<input type=\"hidden\" id=\"User\" name=\"User\" value=\"" + a.GetCurrentUser().ToUpper() + "\" />");
SB.Append("<select name=\"textUser\" id name=\"textUser\" onchange=\"onChangeUser()\">");
foreach (String element in UserList)
{
if (a.GetCurrentUser().ToUpper()==element.ToUpper()||a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
{
if (a.GetUser().ToUpper() == element.ToUpper())
{
SB.Append("<option value=\"" + element + "\" selected >" + element + "</option>");
}
else
{
SB.Append("<option value=\"" + element + "\">" + element + "</option>");
}
}
}
SB.Append("</select>");
litUserMaint.Text = SB.ToString();
SB = new StringBuilder();
SB.Append("<select name=\"textCntry\" id name=\"textCntry\" >");
if (a.GetCurrentCntry().ToUpper() == "ALL"||a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
{
SB.Append("<option value=\"ALL\">ALL</option>");
}
foreach (String element in CountryList)
{
if (a.GetCurrentCntry().ToUpper() == element.ToUpper() || a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
{
if (a.GetCountry().ToUpper() == element.ToUpper())
{
SB.Append("<option value=\"" + element + "\" selected >" + element + "</option>");
}
else
{
SB.Append("<option value=\"" + element + "\">" + element + "</option>");
}
}
}
SB.Append("</select>");
litCountryList.Text = SB.ToString();
if (a.GetErrorMessage().Trim() != "")
{
StringBuilder ES = new StringBuilder();
ES.Append("<table border=1><tr><td class=\"ErrorText\">");
ES.Append(a.GetErrorMessage().ToString());
ES.Append("</td></tr></table>");
errormsg.Text = ES.ToString();
}
else
{
errormsg.Text = " ";
}
您的代码中存在逻辑错误。
if (a.GetCurrentUser().ToUpper()==element.ToUpper()||a.GetCurrentUser().ToUpper() == "SYSTEM" || a.GetCurrentUser().ToUpper() == "trainer")
string a.GetCurrentUser().ToUpper() == "trainer"
永远不会为真。您正在将左侧的大写字符串评估为小写字符串。
要修复它,您可以写:
a.GetCurrentUser().ToUpper() == "TRAINER"
或者:
a.GetCurrentUser().Equals("trainer", StringComparison.InvariantCultureIgnoreCase))
我还建议在循环开始时只使用 运行 GetCurrentUser
,然后如果它是一个昂贵的评估(即使它不是)使用结果,因为你不不需要用同一个方法多次获取。
关于你的代码的主题;它还有一些其他问题:
您允许在网站上显示没有 HTML 编码的用户名。如果该用户名曾被显示给其他用户,则有人可以制作一个恶意用户名,允许他们执行 XSS 或 SQL 注入攻击(XSS 肯定,SQL 注入在这种情况下,如果你也是错误地没有参数化您的 SQL 输入)。\
您的代码中发生了很多事情,尝试手动构建 HTML 既不好玩。还有其他方法;特别是使用视图。在不了解更多关于您的设置的情况下,除了 "Don't do what you're doing" 如果您曾经在工作环境中,我无话可说。