Newer
Older
laserPTZ_CS / FormLogin.cs
wangxitong on 11 Sep 4 KB first commit
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Threading;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using laserPTZ.model;
using System.Drawing;
using System.Security.Cryptography;
using System.Text;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.X509;


namespace laserPTZ
{
    public partial class FormLogin : Form
    {
        public static User user = new User();
        public static FormLogin formLogin;
        public static string token = "";

        public FormLogin()
        {
            InitializeComponent();
            formLogin = this;

            // 设置双缓冲
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

           
            //string data = "deletePermission:{\"ids\":[1,2,3,4]}";

            //data = data.Replace("deletePermission:", "");
            //data = data.Insert(7, "\"");
            //data = data.Insert(data.Length - 1, "\"");
            //JObject json = (JObject)JsonConvert.DeserializeObject(data);//或者JObject jo = JObject.Parse(jsonText);

            //string[] ids = json["ids"].ToString().Replace("[", "").Replace("]", "").Split(',');

            //MessageBox.Show("mmmm");
        }

        private void FormLogin_Load(object sender, EventArgs e)
        {
            btn_login.Focus();
        }
        // 登录
        private void btn_login_Click_1(object sender, EventArgs e)
        {
            string result = Http.http("http://" + ConfigHelper.GetAppConfig("server").Trim() + "/config/baseConfig", "GET", null);
            if (result == "")
            {
                MessageBox.Show("服务器异常,登录失败");
                return;
            }
            JObject json = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
            
            if (json["success"].ToString() == "False")
            {
                MessageBox.Show("登录失败,未授权!");
                return;
            }
            if (json["data"].ToString() == "[]")
            {
                MessageBox.Show("服务器异常,登录失败");
                return;
            }
            string publicKey = "";
            JObject jar = (JObject)JsonConvert.DeserializeObject(json["data"].ToString());
            publicKey =jar["publicKey"].ToString();

            RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));
            publicKey = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
            Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
            Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
            //密码加密
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] cipherbytes;
            rsa.FromXmlString(publicKey);
            cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(txt_password.Text.Trim()), false);

            string pwd = Convert.ToBase64String(cipherbytes);
            pwd = System.Web.HttpUtility.UrlEncode(pwd, System.Text.Encoding.UTF8);


            //登录
            string query = "?username=" + txt_user.Text.Trim() + "&" + "password=" + pwd;
            result = Http.http("http://" + ConfigHelper.GetAppConfig("server").Trim() + "/user/login" + query, "POST", null);
            if (result == "")
            {
                MessageBox.Show("服务器异常,登录失败");
                return;
            }
            json = ((JObject)JsonConvert.DeserializeObject(result));
            if (json["code"].ToString() == "200")
            {
                JObject data = ((JObject)JsonConvert.DeserializeObject(json["data"].ToString()));
                token = data["token"].ToString();

                DialogResult = DialogResult.OK;
                Close();
                //FormMain FormMain = new FormMain();
                //this.Visible = false;
                //FormMain.Show();
            }
            else
            {
                MessageBox.Show("用户名或密码错误,登录失败");
                return;
            }
        }


        private void label1_Click(object sender, EventArgs e)
        {
            Close();
        }
       

        private void label1_MouseEnter(object sender, EventArgs e)
        {
            label1.BackColor = Color.Plum;
        }

        private void label1_MouseLeave(object sender, EventArgs e)
        {
            label1.BackColor = Color.FromArgb(216, 206, 206);
        }
    }
}