[英]How to check if user is log in once enter a form using c# winform only, no asp.netc#
没有使用asp.net C#
我需要知道用户输入表单后是否已登录,如果他/她未登录,则返回到登录表单。 我到处看到的人都使用asp.net来实现这一目标,但我想知道如何不使用asp.net来做到这一点。
公共数据表登录名(字符串用户名,字符串密码){
server = "localhost";
database = "xxxx";
uid = "root";
password = "";
string MySQLConnectionString = $"datasource=127.0.0.1;port = 3306; SERVER={server}; DATABASE={database}; USERNAME={uid}; PASSWORD={password};sslmode=none";
MySqlConnection db_Conn = new MySqlConnection(MySQLConnectionString);
MySqlCommand cmd = new MySqlCommand();
db_Conn.ConnectionString = MySQLConnectionString;
string username_txtfield = username_txtbox.Text;
string pw_txtfield = password_txtbox.Text;
try
{
db_Conn.Open();
cmd.Connection = db_Conn;
cmd.CommandText = "SELECT count(*),user_id,person_username,role_id FROM user_tb " +
"WHERE person_username=@username " +
"AND user_password=@password";
cmd.Prepare();
cmd.Parameters.AddWithValue("@username", username_txtfield);
cmd.Parameters.AddWithValue("@password", pw_txtfield);
MySqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
db_Conn.Close();
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
在我的登录表单中登录btn
private void button1_Click(object sender, EventArgs e)
{
//login();
try
{
DataTable result = Login(username_txtbox.Text, password_txtbox.Text);
if (result.Rows.Count == 1)
{
this.Hide();
string role = result.Rows[0]["role_id"].ToString();
switch (role)
{
case "3":
MessageBox.Show("User login successfully!");
user_form_page();
break;
case "1":
MessageBox.Show("Admin login successfully!");
//this.Hide();
Admin_page admin_form = new Admin_page();
admin_form.ShowDialog();
this.Close();
break;
}
}
else
{
MessageBox.Show("INVALID USERNAME OR PASSWORD");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
当然,ASP.Net身份服务是完成此类任务的成熟方法,但是如果您希望拥有自己的身份验证方法,则需要实现许多事情。
您需要的许多内容实际上都是基于您正在实现的方案,但是您需要的最基本的内容是静态用户,该静态用户将通过您的方法使用该用户,以查看该用户是否已经登录。 例如,您可以拥有:
public static class Authentication
{
public static User CurrentUser { get; private set; }
public static bool Login(User user)
{
if(user == null)
throw new ArgumentException("Invalid user","user");
CurrentUser = user;
}
}
这只是这种事情的最基本实现,然后您可以检查CurrentUser
是否为null并指示用户登录页面或向她显示结果。
随着需求的增长,您将需要实施更多的东西。 注销(用户的本地或远程数据库)将当前登录的用户存储在磁盘中,这样,在关闭应用程序和许多其他操作后,她无需再次登录
编辑
根据您的新信息,您可以将此行添加到您的登录按钮中,如下所示:
if (result.Rows.Count == 1)
{
Authentication.Login(new User(result.Rows[0]["username"],result.Rows[0]["role_id"])
//The rest of code
}
我还假定您有一个类似的课程:
class User
{
public string Name { get; }
public int RoleId { get; }
public User(string name, int roleId)
{
Name = name;
RoleId = roleId;
}
}
然后,您必须在用户表单或admin表单构造函数中检查Authentication.CurrentUser
为null
,以确保用户登录,可以使用Authentication.CurrentUser
的信息显示登录的用户名或角色或任何其他信息。
我希望这可以帮助你。 如果您需要更多信息,请这样说。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.