跳到正文

【C#进阶】实现用户的权限级别控制(窗体间传值思路)

1.CaterUI层 private void btnLogin_Click(object sender, EventArgs e) { //获取用户输入的信息 string name = txtName.Text; string pwd = txtPwd.Text; //调用业务逻辑层查询用户名密码是否正确 ManagerInfoBll mibll = new ManagerInfoBll(); // 获得登录成功的用户级别信息 int type = -1; // 开始登录验证 LoginState loginState = mibll.Login(name, pwd, out type); switch (loginState) { //登录成功就打开一个新的窗体 case LoginState.OK: FormMain fm = new FormMain(); // 在这里通过使用tag属性吧这个值传递过去给我的餐饮管理主窗体(员工级别信息) fm.Tag = type; //显示登录成功后的主窗体 fm.Show(); //将当前的窗体隐藏起来(因为这个窗体是一个主窗体, 我们不能直接关闭掉) this.Hide(); break; case LoginState.NameError: MessageBox.Show("该用户不存在", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case LoginState.PwdError: MessageBox.Show("密码错误", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } 2.CaterBll层 // 调用Dal层, 实现用户的登录 /// /// /// /// /// /// 返回用户的登录级别信息 /// public LoginState Login(string name, string pwd, out int type) { // 设置type的默认值, 如果为此值的时候, 就不会使用 type = -1; //根据用户名进行对象的查询 ManagerInfo mi = miDal.getManagerByName(name); if (mi == null) { //用户名错误 return LoginState.NameError; } else { //用户名正确 //由于这里查询出来的是一个MD5加密后的结果, 因此我需要提前把我的这个密码进行MD5加密后再比较是否相同 string md5_pwd = Md5Helper.EncryptString(pwd); //两个都加密了的密码进行比较 if (mi.MPwd.Equals(md5_pwd)) { type = mi.MType; //密码正确 return LoginState.OK; } else { //密码错误 return LoginState.PwdError; } } } 3.主窗体之间进行传值 private void FormMain_Load(object sender, EventArgs e) { // 当登录成功后, 判断登录进来的员工级别, 以确定是否显示menuManager图标 int type = Convert.ToInt32(this.Tag); if (type == 1) { //经理(默认已经是要显示出来的) } else{ // 店员(管理员的菜单不需要显示出来) this.menuManagerInfo.Visible = false; } }

评论

填写昵称与邮箱即可评论,无需登录。

推荐阅读