gpt4 book ai didi

c# - 仅使用c# winform,不使用asp.netc#输入表单后如何检查用户是否登录

转载 作者:行者123 更新时间:2023-11-29 16:38:49 26 4
gpt4 key购买 nike

未使用asp.net c#

我需要知道用户输入表单后是否登录,如果他/她没有登录,他将返回登录表单。我到处都看到人们使用 ASP.NET 来实现这一目标,但我想知道如何在不使用 ASP.NET 的情况下实现这一目标。

公共(public)数据表登录(字符串用户名,字符串密码) {

        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):

class User
{
public string Name { get; }
public int RoleId { get; }

public User(string name, int roleId)
{
Name = name;
RoleId = roleId;
}
}

然后您必须在用户表单或管理表单构造函数中检查 Authentication.CurrentUsernull 以确保用户登录,您可以使用 中的信息Authentication.CurrentUser 显示登录的用户名或角色或任何其他信息。

希望这对您有帮助。如果您需要更多信息,请说明。

关于c# - 仅使用c# winform,不使用asp.netc#输入表单后如何检查用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com