简单的方法我可以验证登录页面。如何在3层架构中进行身份验证?请有人给我发送DAL,BAL和GUI层应该是什么的代码?这是我的简单代码:
的Web.config:
<authentication mode="form">
<form loginurl="Login.aspx">
<credential password Format="clear">
<user name="abcd" password="1234">
</credential>
</authentication>
</form>
<authorization>
<deny users="?">
</authorization>
login.aspx.cs:
sqlconnection con=new sqlconnection("server=localhost;database=dbname;uid=;pwd=;Trusted_Connection=true");
sqldataAdapter da=new sqldataAdapter("select * from Login where UserName='"+TextBox1.Text+"' and Password='"+TextBox2.Text+"'",con);
Dataset ds=new Dataset();
da.Fill(ds);
if(ds.Tables[0].rows.Count>0)
{
if(FormAuthentication.Authenticate("abcd","1234")
{
FormAuthentication.RedirectFromLoginPage(TextBox1.Text,false);
Response.write("Logged in");
}
else
{
Response.write("Unautherised User");
}
Response.Redirect("welcome.aspx");
}
else
{
Response.write("Sorry Invalid UserName or Password");
}
答案 0 :(得分:1)
一般来说,你应该至少有以下几个类:
另外,为了防止SQL注入,永远不要连接查询字符串。改为使用参数。
以下是一些示例类:
namespace DAL
{
public class ConnectionManager
{
public static SqlConnection GetConnection() {
SqlConnection cn = new SqlConnection("server=localhost;database=dbname;uid=;pwd=;Trusted_Connection=true");
cn.Open();
return cn;
}
}
}
namespace BAL
{
public class User
{
public string UserName { get; set; }
public string Password { private get; set; }
public bool Login() {
return Login(this.UserName, this.Password);
}
public bool Login(string user, string password) {
bool success=false;
using (SqlConnection cn = ConnectionManager.GetConnection())
{
string sql = "select count(*) from Login where UserName=@user and Password=@password";
using (SqlCommand command = new SqlCommand(sql, cn))
{
command.Parameters["@user"].Value = user;
command.Parameters["@password"].Value = password;
success = (int)command.ExecuteScalar() > 0;
}
cn.Close();
}
return success;
}
}
}
答案 1 :(得分:0)
为什么你想要重新发明轮子,有点不知所措? ASP.NET成员资格提供程序为您完成所有这一切,如果您需要大量修改其行为,它的开源,易于阅读,理解和更改。它可以与您自己的n层架构轻松集成 - 我们一直这样做。