【问题标题】:Administrator exclusive page?管理员专属页面?
【发布时间】:2018-01-15 16:30:06
【问题描述】:

我目前正在制作一个 Windows 表单登录系统,我已经研究了如何设置一个普通的每个人都可以看到主页系统,但对于管理员我希望它打开一个新表单 (form3),其中包含客户订单。 我需要它从登录按钮打开。单击就像打开 form2 以显示一般用户的商店页面。我的表中也没有用于用户角色的列。 我已经尝试过 if else 语句并遇到了 bools 的问题,但字符串等除外。

    using System;
    using System.Data;
    using System.Windows.Forms;
    using MySql.Data;
    using MySql.Data.MySqlClient;

    namespace Aliena_Store
    {


public partial class Form1 : Form
{
    //string ConnectionState = "";
    public Form1()
    {
        InitializeComponent();

    }

    MySqlConnection connection = new MySqlConnection("server=localhost;user=root;database=Aliena_Store;port=3306;password=Blackie");
    MySqlDataAdapter adapter;

    DataTable table = new DataTable();

    private void UsernameLogin_TextChanged(object sender, EventArgs e)
    {

    }

    private void PasswordLogin_TextChanged(object sender, EventArgs e)
    {

    }

    private void LoginButton_Click(object sender, EventArgs e)
    {
        adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `User_Details` WHERE `username` = '" + UsernameLogin.Text + "' AND `password` = '" + PasswordLogin.Text + "'", connection);

        adapter.Fill(table);
        var usernameSaved = UsernameLogin.Text;
        var passwordSaved = PasswordLogin.Text;
        Panel panel1 = new Panel();


        if (table.Rows.Count <= 0)
        {

         panel1.Height = 0;

         var result = MessageBox.Show("Username/Password Are Invalid or does not exist. Please sign up or retry your details");

        }

        else
        {
            panel1.Height = 0;
            this.Hide();
            if (table.Rows.Count >= 0)
            {

                Form nextForm;
                var result = MessageBox.Show("Login successful...Now logging in");
                this.Hide();
                object user = UsernameLogin.Text;
                object password = PasswordLogin.Text;
                if (user = "root" & password = "Pa$$w0rd")
                {
                    nextForm = new Form3();
                }
                else
                {
                    nextForm = new Form2();
                }
                nextForm.ShowDialog();
            }

            //Form2 f2 = new Form2();
            //f2.ShowDialog();

            //if login is successful needs to lead to another screen - if matches my account standard store screen or make root account just for the admin page
        }

        table.Clear();
    }


    private void EmailSignUp_TextChanged(object sender, EventArgs e)
    {

    }

    private void UsernameSignUp_TextChanged(object sender, EventArgs e)
    {

    }

    private void PasswordSignUp_TextChanged(object sender, EventArgs e)
    {

    }

    private void SignUpButton_Click(object sender, EventArgs e)
    {
        //connection.Open();
        string Query = "insert into User_Details (Email,Username,Password) values('" + this.EmailSignUp.Text + "', '" + this.UsernameSignUp.Text + "','" + this.PasswordSignUp.Text + "');";
        //string insertQuery = "INSERT INTO User_Details(Email,Username,Password)VALUES('" + EmailSignUp.Text + "','" + UsernameSignUp.Text + "'," + PasswordSignUp.Text + ")";
        MySqlCommand command = new MySqlCommand(Query,connection);

        try
        {
            if (command.ExecuteNonQuery() == 1)
            {
                MessageBox.Show("Data Inserted");
                connection.Close();
            }
            else
            {
                MessageBox.Show("Data Not Inserted");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            connection.Close();
        }

    }

}

}

【问题讨论】:

  • “我尝试了几种方法都没有成功,目前无法启动和运行” 不是问题描述。 什么你试过了吗? 什么有问题吗?不要指望读者会通灵或浪费时间提出您已经反驳的事情。

标签: c# mysql visual-studio login-control


【解决方案1】:

几件事。

您的应用程序中需要一个用户对象来存储用户属性。该对象可以有一个 IsAdmin 属性,您可以稍后在代码中使用该属性。

或者,如果您不想创建和维护用户对象,则再次调用数据库以查看用户是否是管理员并将结果本地存储到您的方法中。

然后根据用户是否为管理员来实例化 Form3 而不是 Form2

Form nextForm;
var result = MessageBox.Show("Login successful...Now logging in");
this.Hide();
if (user.IsAdmin) {
    nextForm = new Form3();
} else {
    nextForm = new Form2();
}
nextForm.ShowDialog();

PS:我希望您不要像看起来那样在数据库中以纯文本形式存储密码。

【讨论】:

  • 我将密码存储为大学作业,而老师只是想查看某些功能,他对当前的安全性并不大惊小怪,因为所有信息都是在输入之前随机生成并以自动插入的形式给出的数据。
  • @Dusky 好的,很公平。不过,总是谨慎地指出。
  • 到了这一点,但后来我得到一个标准错误:操作符 && 不能在字符串和对象之间应用。无论如何要绕过类似这样的东西:panel1.Height = 0; this.Hide(); if (table.Rows.Count >= 0) { Form nextForm; var result = MessageBox.Show("登录成功...正在登录"); this.Hide();对象用户 = UsernameLogin.Text;对象密码 = PasswordLogin.Text; if (user = "root" & password = "Pa$$w0rd"
  • 登录后为什么还要检查用户名和密码?将您的新代码编辑到您的问题中(全部)。您粘贴的代码甚至不包括 &amp;&amp; 运算符。
  • 我不是......我不认为我是 - 我更新了它,所以如果它无效,它会先通过,然后它应该作为有效或有效的管理员通过..
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多