protected void btnLogin_Click(object sender, EventArgs e)
{
Member E = new Member();
E = E.Login(txtEmail.Text, txtPassword.Text);
Session["user"] = E;
if (Session["user"] != null)
{
E = (Member)Session["user"];
if (E.UserType == "Doctor")
{
Response.Redirect("Donate.aspx");
}
else if (E.UserType == "admin")
{
Response.Redirect("admin.aspx");
}
else
{
Response.Redirect("user.aspx");
}
}
else
{
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "Invalid Email / password";
}
}
}
这是登录
public Member Login(string Email, string Password)
{
string constr = "Data Source = YAZAN-PC ; initial catalog = Aged ; user = sa; pwd = yazan7;";
SqlConnection conn = new SqlConnection(constr);
SqlDataAdapter da = new SqlDataAdapter("Authenticate", conn);
da.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@Email", Email);
da.SelectCommand.Parameters.AddWithValue("@Password", Password);
DataTable dt = new DataTable();
conn.Open();
da.Fill(dt);
conn.Close();
if (dt.Rows.Count > 0)
return new Member
ID = int.Parse(dt.Rows[0]["ID"].ToString()),
FName = dt.Rows[0]["FName"].ToString(),
LName = dt.Rows[0]["LName"].ToString(),
Email = dt.Rows[0]["Email"].ToString(),
Gender = dt.Rows[0]["Gender"].ToString(),
Password = dt.Rows[0]["Password"].ToString(),
RePassword = dt.Rows[0]["RePassword"].ToString(),
UserType = dt.Rows[0]["UserType"].ToString(),
BirthDate = dt.Rows[0]["BirthDate"].ToString(),
这是班级
我有3个用户 医生 管理 家庭 我需要用户登录时 如果他是医生重定向到页面(doctor.aspx)其他 如果他是管理员重定向到页面(admin.aspx) 如何使用session ???? 来做到这一点答案 0 :(得分:0)
根据您在会话中存储的内容,您可以使用它来检索有关用户的数据。由于您没有提供任何代码或逻辑来执行这些操作,我将采取猜测。
希望这会帮助你。
答案 1 :(得分:0)
定义登录类..
class dcLogin
{
public id string{get;set;}
public name string{get;set;}
public type string{get;set;}
}
用户登录时然后.. 设置
dcLogin objLog=new dcLogin();
objLog.id=userid; objLog.name=username;
objLog.type='usertype'--admin/doctor/user
session["loginuser"]=objLog;
现在您可以随时查看用户类型。
dcLogin objLog=(dcLogin)session["loginuser"];
if(objLog.type=="admin")
{
response.redirect("admin.aspx");
}
EDIT2: 登录后创建一个公共主页。
loginhome.aspx
protected void page_lod()
{
if(session["user"]!=null)
{
Member E=(Member)session["user"];
if(E.UserType =="Doctor")
{
response.rediter("doctor.aspx");
}
else if(E.UserType =="admin")
{
response.rediter("admin.aspx");
}
else
{
response.rediter("user.aspx");
}
}
}
答案 2 :(得分:0)
好的,您收到错误是因为会话为空。我无法相信您的登录代码会在您排队并返回新会员时进行编译。其次是属性设置线是不正确的。但是,除此之外我会建议您的问题是由您的Login方法引起的。
我这样写:
public Member Login(string Email, string Password)
{
string constr = "Data Source = YAZAN-PC ; initial catalog = Aged ; user = sa; pwd = yazan7;";
DataTable dt = new DataTable();
using(SqlConnection conn = new SqlConnection(constr))
{
SqlDataAdapter da = new SqlDataAdapter("Authenticate", conn);
da.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@Email", Email);
da.SelectCommand.Parameters.AddWithValue("@Password", Password);
da.Fill(dt);
}
Member m = new Member();
if (dt.Rows.Count > 0)
{
//Set member properties
m.ID = int.Parse(dt.Rows[0]["ID"].ToString());
m.FName = dt.Rows[0]["FName"].ToString();
m.LName = dt.Rows[0]["LName"].ToString();
m.Email = dt.Rows[0]["Email"].ToString();
m.Gender = dt.Rows[0]["Gender"].ToString();
m.Password = dt.Rows[0]["Password"].ToString();
m.RePassword = dt.Rows[0]["RePassword"].ToString();
m.UserType = dt.Rows[0]["UserType"].ToString();
m.BirthDate = dt.Rows[0]["BirthDate"].ToString();
//add any other properties needed to be filled.
}
return m;
}
然后,您将使用' UserType'根据您当前的代码。取决于您可以拥有的用户类型'将取决于你检查的内容。如果您有类似于' Doctor'那么你可能想确保修剪空白并且你的支票不区分大小写,例如:
if (E.UserType.Trim().Equals("Doctor", StringComparison.InvariantCultureIgnoreCase))
{
Response.Redirect("Donate.aspx");
}