我开发了一个基于 Intranet Web 的应用程序,它运行良好。该系统仅专用于我公司的一个部门。该部门以外的任何用户在尝试浏览系统时都会收到错误页面。系统将通过将他的网络 ID 传递给 Active Directory 来检查用户信息并从那里获取他的信息。为此,我创建了一个名为 Security 的类。然后我将以下内容放在我的母版页中:
if (Security.isMember(netID))
{
................
}
else
Response.Redirect("Error.aspx");
代码隐藏:
public static bool isMember(string userid)
{
if (Org.Code == "Org. Code")
return true;
else
return false;
}
由于用户第一次浏览网站后将被添加到数据库中,我想修改Security 类中的先前方法以检查用户是否存在于数据库中。如果不是,系统应该使用 Security 类来检查用户是否属于那个部门。我不知道在前面的方法里面放一个代码来检查数据库中用户的存在。你能帮我解决这个问题吗?
我用于检查数据库中用户是否存在的初始代码:
if (!String.IsNullOrEmpty(userid))
{
string username = userid;
string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=Test;Integrated Security=True";
string cmdText2 = "SELECT Count(*) FROM employee WHERE Username = '" + username + "'";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// Open DB connection.
using (SqlCommand cmd = new SqlCommand(cmdText2, conn))
{
cmd.ExecuteScalar();
}
}
}
我通过Security类中的方法修改为:
public static bool isMember(string userid)
{
if (!String.IsNullOrEmpty(userid))
{
string username = userid;
string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=Test;Integrated Security=True";
string cmdText2 = "SELECT Count(*) FROM employee WHERE Username = '" + username + "'";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// Open DB connection.
using (SqlCommand cmd = new SqlCommand(cmdText2, conn))
{
cmd.ExecuteScalar();
}
}
return true;
}
else if (Org.Code == code)
return true;
else
return false;
}
但是通过这样做,系统对所有人开放,即使他们在部门之外。那么如何解决这个问题呢?