一个登录2个用户 [英] one login for 2 users
问题描述
嘿
i为用户和管理员创建一个登录表单
登录按钮代码
受保护 void Button1_Click( object sender,EventArgs e)
{
if (cd .Loginuser(UserName.Text,Password.Text))
{
Session [ UserID2 ] = cd.Loginuser(UserName.Text,Password.Text);
会话[ Login4] = UserName.Text;
会话[ Login5] = Password.Text;
Lgin.Text =( 登录成功);
Response.Redirect( WebForm1.aspx);
Lgin.Text =( 密码不正确< /跨度>);
}
else if (cd.Loginuser(UserName。 Text,Password.Text))
{
Session [ UserID] = cd.Loginuser(UserName.Text,Password.Text);
会话[ Login2] = UserName.Text;
会话[ Login3] = Password.Text;
Lgin.Text =( 登录成功);
Response.Redirect( Home.aspx);
Lgin.Text =( 密码不正确);
}
}
和loginuser的功能如下:
public bool Loginuser( string UserName, string 密码)
{
if (db.ExecuteDataSet( splogin2, new object [] {UserName,Password})。表[ 0 ]。Rows.Count > 0 )
{
返回 true ;
}
返回 false ;
}
和sp是
ALTER程序[dbo]。[splogin2]
@UserName nvarchar( 50 ),
@Password nvarchar( 50 )
as
选择 Users.UserID 来自 [Users] 其中 UserName = @ UserName和
密码= @密码
和UserTypeID = 1 和UserTypeID = 2
现在我调试应用程序
然后用户登录并继续下一个表格,但当我尝试登录管理员时,它显示我不正确的密码
在这种情况下哪里是probelm ??? br />
i wnat为tboth用户和管理员做了一个登录表格
有人可以帮我吗
现在首先你需要为用户和按钮点击创建一个角色你需要获取用户的角色并检查你的if else条件,
if (cd.GetUserRole(UserName.Text ,Password.Text)== 管理员)
{
// 在此处进行编码
}
else if (cd.GetUserRole(UserName.Text,Password.Text)== 用户)
{
// 在这里进行编码
}
如果我对UserTypeID的假设没有错,那么将你的SP更改为
ALTER procedure [dbo]。[splogin2]
@ UserName nvarchar ( 50 ),
@ Password nvarchar ( 50 )
as
选择 Users.UserID 来自 [Users] 其中 UserName = @ UserName 和
密码= @密码
和 UserTypeID = 1 或 UserTypeID = 2
或已被添加,因为我认为您可以将Admin分配给UserTypeID = 1,User分配给UserTypeID = 2,
但是在你的SP中如果你写了AND然后它总是假的。
更新的解决方案 - >
将您的SP更改为关注 -
< pre lang = text > ALTER程序[dbo]。[splogin2]
@UserName nvarchar(50),
@Password nvarchar(50)
as
如果存在(从[Users]中选择Users.UserID,其中UserName = @ UserName和
密码= @密码
和UserTypeID = 1)选择1
如果存在(从[Users]中选择Users.UserID,其中UserName = @ UserName和
密码= @密码
和UserTypeID = 2 )选择2 < / pre >
更改登录用户的函数as-
//将返回类型更改为int
< pre lang = c# > public int Loginuser(string UserName,string Password)
{
//返回值如果Admin然后其他2为User
返回db.ExecuteDataSet(splogin2,new object [] {UserName,Password})。Tables [0] .Rows [0] [1] .ToString())
}
< / pre >
更改按钮点击as-
< pre lang = cs > protected void Button1_Click(object sender,EventArgs e)
{
if(cd.Loginuser(UserName.Text,Password.Text)== 1)
{
Session [& quot; UserID2& quot;] = cd.Loginuser(UserName.Text,Password 。文本);
Session [& quot; Login4& quot;] = UserName.Text;
Session [& quot; Login5& quot;] = Password.Text;
Lgin.Text =(& quot;登录成功& quot;);
Response.Redirect(& quot; WebForm1.aspx& quot;);
Lgin.Text =(& quot; Incorrect Passsword& quot;);
}
else if(cd.Loginuser(UserName.Text,Password.Text)== 2)
{
Session [& quot; UserID& quot ;] = cd.Loginuser(UserName.Text,Password.Text);
Session [& quot; Login2& quot;] = UserName.Text;
Session [& quot; Login3& quot;] = Password.Text;
Lgin.Text =(& quot;登录成功& quot;);
Response.Redirect(& quot; Home.aspx& quot;);
Lgin.Text =(& quot; Incorrect Passsword& quot;);
}
} < / pre >
谢谢
更新的解决方案 -
将您的SP更改为关注 -
ALTER procedure [dbo]。[splogin2]
< span class =code-sdkkeyword> @ UserName nvarchar ( 50 ),
@ Password nvarchar ( 50 )
as
如果 存在(选择 Users.UserID 来自 [用户] where UserName = @ Use rName 和
密码= @密码
和 UserTypeID = 1)选择 1
如果 存在(选择 Users.UserID 来自 [用户] 其中 UserName = @ UserName 和
密码= @密码
和 UserTypeID = 2)选择 2
更改登录用户的功能as-
public int Loginuser( string UserName, string 密码)
{
// 返回值如果Admin然后其他2为用户
返回 db.ExecuteDataSet( splogin2, new object [] {UserName,Password}。)表[ 0 ]。行[ 0 ] [ 1 ]。ToString())
}
更改按钮点击as-
protected void Button1_Click( object sender,EventArgs e)
{
< span class =code-comment> // 此处检查登录人员是Admin(1)还是User(2)
< span class =code-keyword> if (cd.Loginuser(UserName.Text,Password.Text)==1 )
{
Session [& quot; UserID2& quot;] = cd.Loginuser(UserName.Text,Password.Text);
Session [& quot; Login4& quot;] = UserName.Text;
Session [& quot; Login5& quot;] = Password.Text;
Lgin.Text =(& quot;登录成功& quot;);
Response.Redirect(& quot; WebForm1.aspx& quot;);
Lgin.Text =(& quot; Incorrect Passsword& quot;);
}
else if (cd.Loginuser(UserName。 Text,Password.Text)== 2 )
{
Session [& quot; UserID& quot;] = cd.Loginuser(UserName .Text,Password.Text);
Session [& quot; Login2& quot;] = UserName.Text;
Session [& quot; Login3& quot;] = Password.Text;
Lgin.Text =(& quot;登录成功& quot;);
Response.Redirect(& quot; Home.aspx& quot;);
Lgin.Text =(& quot; Incorrect Passsword& quot;);
}
}
hey
i create one login form for user and admin
in login button code
protected void Button1_Click(object sender, EventArgs e)
{
if (cd.Loginuser(UserName.Text, Password.Text))
{
Session["UserID2"] = cd.Loginuser(UserName.Text, Password.Text);
Session["Login4"] = UserName.Text;
Session["Login5"] = Password.Text;
Lgin.Text = ("Login Successfully");
Response.Redirect("WebForm1.aspx");
Lgin.Text = ("Incorrect Passsword");
}
else if (cd.Loginuser(UserName.Text, Password.Text))
{
Session["UserID"] = cd.Loginuser(UserName.Text, Password.Text);
Session["Login2"] = UserName.Text;
Session["Login3"] = Password.Text;
Lgin.Text = ("Login Successfully");
Response.Redirect("Home.aspx");
Lgin.Text = ("Incorrect Passsword");
}
}
and the funtion of loginuser is follow
public bool Loginuser(string UserName, string Password)
{
if (db.ExecuteDataSet("splogin2", new object[] { UserName, Password }).Tables[0].Rows.Count > 0)
{
return true;
}
return false;
}
and the sp is
ALTER procedure [dbo].[splogin2]
@UserName nvarchar(50),
@Password nvarchar(50)
as
select Users.UserID from [Users] where UserName=@UserName and
Password=@Password
and UserTypeID=1 and UserTypeID=2
now when i debug the app
then user is login and proceed to next form but when i try to login admin the it shows me incorrect password
where is probelm in that case???
i wnat to done one login form for tboth user and admin
can somebody help me
Now first of all you need to Create a Role for Both the users and in your button click you need to fetch the role of the user and check into your if else conditions,
if (cd.GetUserRole(UserName.Text, Password.Text) == "Administrator") { //do your coding here } else if(cd.GetUserRole(UserName.Text, Password.Text) == "User") { //do your coding here }
If my assumption about UserTypeID is not wrong then Change your SP to
ALTER procedure [dbo].[splogin2] @UserName nvarchar(50), @Password nvarchar(50) as select Users.UserID from [Users] where UserName=@UserName and Password=@Password and UserTypeID=1 OR UserTypeID=2
OR has been added as i think you may assign the Admin to UserTypeID=1 and User to UserTypeID=2,
But in your SP if you write AND then it will always be FALSE.
Updated Solution-> Change Your SP as Follows- <pre lang="text">ALTER procedure [dbo].[splogin2] @UserName nvarchar(50), @Password nvarchar(50) as If exists(select Users.UserID from [Users] where UserName=@UserName and Password=@Password and UserTypeID=1 ) select 1 If exists(select Users.UserID from [Users] where UserName=@UserName and Password=@Password and UserTypeID=2 ) select 2</pre> Change the Function for the login User as- //Change the return Type to int <pre lang="c#">public int Loginuser(string UserName, string Password) { // return the values if Admin then 1 else 2 for User return db.ExecuteDataSet("splogin2", new object[] { UserName, Password }).Tables[0].Rows[0][1].ToString()) } </pre> Alter your button Click as- <pre lang="cs">protected void Button1_Click(object sender, EventArgs e) { if (cd.Loginuser(UserName.Text, Password.Text)==1) { Session["UserID2"] = cd.Loginuser(UserName.Text, Password.Text); Session["Login4"] = UserName.Text; Session["Login5"] = Password.Text; Lgin.Text = ("Login Successfully"); Response.Redirect("WebForm1.aspx"); Lgin.Text = ("Incorrect Passsword"); } else if (cd.Loginuser(UserName.Text, Password.Text)==2) { Session["UserID"] = cd.Loginuser(UserName.Text, Password.Text); Session["Login2"] = UserName.Text; Session["Login3"] = Password.Text; Lgin.Text = ("Login Successfully"); Response.Redirect("Home.aspx"); Lgin.Text = ("Incorrect Passsword"); } }</pre>
Thanks
Updated Solution-
Change Your SP as Follows-
ALTER procedure [dbo].[splogin2] @UserName nvarchar(50), @Password nvarchar(50) as If exists(select Users.UserID from [Users] where UserName=@UserName and Password=@Password and UserTypeID=1 ) select 1 If exists(select Users.UserID from [Users] where UserName=@UserName and Password=@Password and UserTypeID=2 ) select 2
Change the Function for the login User as-
public int Loginuser(string UserName, string Password) { // return the values if Admin then 1 else 2 for User return db.ExecuteDataSet("splogin2", new object[] { UserName, Password }).Tables[0].Rows[0][1].ToString()) }
Alter your button Click as-
protected void Button1_Click(object sender, EventArgs e) { // here Checking whether the login person is Admin(1) or User(2) if (cd.Loginuser(UserName.Text, Password.Text)==1) { Session["UserID2"] = cd.Loginuser(UserName.Text, Password.Text); Session["Login4"] = UserName.Text; Session["Login5"] = Password.Text; Lgin.Text = ("Login Successfully"); Response.Redirect("WebForm1.aspx"); Lgin.Text = ("Incorrect Passsword"); } else if (cd.Loginuser(UserName.Text, Password.Text)==2) { Session["UserID"] = cd.Loginuser(UserName.Text, Password.Text); Session["Login2"] = UserName.Text; Session["Login3"] = Password.Text; Lgin.Text = ("Login Successfully"); Response.Redirect("Home.aspx"); Lgin.Text = ("Incorrect Passsword"); } }
这篇关于一个登录2个用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!