原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计

    ASP.NET MVC+EF框架+EasyUI实现权限管系列

  (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装 

    (5):前台Jquery easyUI实现   (6):EF上下文实例管理   (7):DBSession的封装   (8):DBSession线程内唯一 

    (9):TT摸版的学习   (10):VSS源代码管理  (11):验证码实现和底层修改  (12):实现用户异步登录和T4模板

    (13):权限设计  (14):主框架搭建

 前言:已经很长一段时间没有写博客了,自从五一放假出去玩了一圈之后,回来就一直没有心情,在这公司的事情也比较多,所以一直就没有写,现在我继续开始写我的这个系列,我一定要写完这个系列,他一直在我的心里,所以我必须努力地写完它,不能前功尽弃,前面我们已经写了很多东西了,这篇博客我们开始讲述标题上面的这些东西,下面我就进行详细的描述。

1. 用户登录详细错误显示

  (1)首先我在前面的博客中本来已经实现了登录信息的,但是就是说我登录的时候如果写错用户名或者密码都会直接输出用户名密码错误,而不会详细的输出错误信息,比如:用户名输入错误提示用户名错误,密码输入错误提示密码错误,当然现在我发现各大网站很少会有这样的需求,但是有人在我的博客上面留言了说怎么实现这个功能,我觉得就是需求,所以下面我们来讲述一下怎么能够详细的判断用户输入的信息那个是错的。

  (2)如果我们不详细判断用户名密码输入错误的话,我们的SQL语句我相信大家都会写,就是判断用户名和密码是否等于输入的密码,如果想等则登录成功,负责失败,这是我前面的思路,下面我说一下显示错误的详细信息的思路。

2. 详细错误信息的实现

  (1)首先我们要在公共类库里面添加一个枚举类型来列举出现的错误信息,代码如下:

 namespace LYZJ.UserLimitMVC.Common

 {

     /// <summary>

     /// 枚举出当用户登录的时候出现的各种错误

     /// </summary>

     public enum LoginResult

     {

         PwdError,       //密码错误

         UserNotExist,   //用户不存在

         UserIsNull,     //用户名为空

         PwdIsNUll,      //密码为空

         OK,             //登录成功

     }

 }

  (2)然后我们就要去业务逻辑层去修改实现业务的代码,在这里我们将改掉我们以前定义的一些方法。代码如下:

   //完成了对用户的校验

         public LoginResult CheckUserInfo(BaseUser userInfo)

         {

             //首先判断用户名,密码是否为空

             if (string.IsNullOrEmpty(userInfo.UserName))

             {

                 return LoginResult.UserIsNull;

             }

             if (string.IsNullOrEmpty(userInfo.UserPassword))

             {

                 return LoginResult.PwdIsNUll;

             }

             //如果不为空的话则去数据库中查询信息

             //在这里会去数据库检查是否有数据,如果没有的话就会返回一个空值

             var LoginUserInfoCheck = _DbSession.BaseUserRepository.LoadEntities(u => u.UserName == userInfo.UserName).FirstOrDefault();

             //对返回的结果进行判断

             if (LoginUserInfoCheck == null)

             {

                 return LoginResult.UserNotExist;

             }

             if (LoginUserInfoCheck.UserPassword != userInfo.UserPassword)

             {

                 return LoginResult.PwdError;

             }

             else

             {

                 return LoginResult.OK;

             }

         }

  (3)我在代码中写了详细的注释,如果大家不太懂得话,可以给我留言或者直接加我的QQ群来询问我,我就在这里不解释了。

  (4)当我们将上面的两步进行完成之后,我们就可以去登录的控制其LoginController中书写判断登录页面信息是否正确的代码,因为代码里面我都写了非常详细的说明,所以我这里就不详细的说明了,代码如下:

 //判断用户输入的信息是否正确

        // [HttpPost]

         public ActionResult CheckUserInfo(string UserName, BaseUser userInfo, string Code)

         {

             //首先我们拿到系统的验证码

             string sessionCode = this.TempData["ValidateCode"] == null

                                      ? new Guid().ToString()

                                      : this.TempData["ValidateCode"].ToString();

             //然后我们就将验证码去掉,避免了暴力破解

             this.TempData["ValidateCode"] = new Guid();

             //判断用户输入的验证码是否正确

             if (sessionCode != Code)

             {

                 return Content("验证码输入不正确");

             }

             //调用业务逻辑层(BLL)去校验用户是否正确,,,定义变量存取获取到的用户的错误信息

             string UserInfoError = "";

             var loginUserInfo = _userInfoService.CheckUserInfo(userInfo);

             switch (loginUserInfo)

             {

                 case LoginResult.PwdError:

                     UserInfoError = "密码输入错误";

                     break;

                 case LoginResult.UserNotExist:

                     UserInfoError = "用户名输入错误";

                     break;

                 case LoginResult.UserIsNull:

                     UserInfoError = "用户名不能为空";

                     break;

                 case LoginResult.PwdIsNUll:

                     UserInfoError = "密码不能为空";

                     break;

                 case LoginResult.OK:

                     UserInfoError = "OK";

                     break;

                 default:

                     UserInfoError = "未知错误,请您检查您的数据库";

                     break;

             }

             #region ----使用if else来判断信息----

             //if (loginUserInfo == LoginResult.UserIsNull)

             //{

             //    UserInfoError = "用户名不能为空";

             //}

             //else if (loginUserInfo == LoginResult.PwdIsNUll)

             //{

             //    UserInfoError = "密码不能为空";

             //}

             //else if (loginUserInfo == LoginResult.UserNotExist)

             //{

             //    UserInfoError = "用户名输入错误";

             //}

             //else if (loginUserInfo == LoginResult.PwdError)

             //{

             //    UserInfoError = "密码输入错误";

             //}

             //else if (loginUserInfo == LoginResult.OK)

             //{

             //    UserInfoError = "OK";

             //}

             //else

             //{

             //    UserInfoError = "未知错误,请您检查您的数据库";

             //}

             #endregion

             return Content(UserInfoError);

         }

  (5)这样我们上面的那个需求算是完成了,下面我们看一下效果图,不要震惊。

         

    

  (6)这样我们就完成用户名密码输入错误的详细显示,如果大家不懂得话,可以联系我或者给我留言,或者直接去我的网站www.kencery.com下面找到MVC权限系统下面的博客留言,一般都会在当天解决。

3. 权限数据库模型介绍

  (1)本来我前面设计了一个简单的数据库,但是后来吉日嘎啦给了我他的权限系统的数据库信息,所以我分析了一段时间之后将我的数据库模型改成他的模型,但是大致的思路还是不变的,因为权限的关系也就那样了,所以我在以前的基础上面加了很多限制的字段,也就是说为了项目的可扩展性吧,模型如图所示:

  

  (2)上面就是我最新的数据库权限模型的设计图纸,至于字段都是什么意思,大致看一下,如图所示:

  

  (3)如上图信息,数据库就是这样设计的,数据库我就不外发了,由于不是我自己的东西,所以希望大家理解,今天的东西我就写到这里了,明天我们继续写我们前台的一些实现。

4.小结

  (1)从底层搭建完毕之后,我觉得要在详细的写前台的东西感觉不太可能,重点是前台太多太乱,所以我也只是大致的把一些东西列举出来并且有一些难点的话我会详细的来说明的,让我们把项目修改完成以后,然后我们将项目上传之后即可。

  Kencery返回本系列开篇

                    

相信自己,你就是下一个奇迹!

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)

    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用

    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色

    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列

    http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览  ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

随机推荐

  1. Windows Azure应用系列:微软的云部署VPN

    本文介绍如何使用OpenVPN微软云计算server既定VPN维修. 过程,如下面: 1.新建Linux或者Ubuntu虚拟机.并设置port.(本文将建立Ubuntu作为演示) 2.利用PuTTY登 ...

  2. java ClassLoader static

    package init; class Person { private static Person person = new Person(); public static int count2 = ...

  3. 在linux上创建nfs遇到的问题。

    我们部署程序时,图片server是单独的一台server,有自己独立的域名.而应用部署在还有一台server上,我们使用一些附件上传工具.比方ajaxfileupload上传附件时是无法跨域訪问的. ...

  4. Objective-C该Protocol

    Objective-C该Protocol Protocol 简单来说就是一系列方法的列表,当中声明的方法能够被不论什么类实现,这样的模式一般称为(delegation)模式 在iOS中和OS X中,A ...

  5. [原创].NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略

    原文:[原创].NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略 .NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略 前言:之前的讨论一直关注在怎么从D ...

  6. 矩阵求逆c++达到

    高斯消元法能够用来找出一个可逆矩阵的逆矩阵.设A 为一个N * N的矩阵,其逆矩阵可被两个分块矩阵表示出来.将一个N * N单位矩阵 放在A 的右手边,形成一个N * 2N的分块矩阵B = [A,I] ...

  7. 使用AppCompat_v7 21.0.0d的几个兼容问题

    1.实现新的ActionBarDrawerToggle动画 ActionBarDrawerToggle使用最新的AppCompat_v7 21会出现一个非常帅的动画.使用方式在Androidstudi ...

  8. csdn仍是&quot;待定&quot;对?

    正如标题,我的博客会审查,?我们见证.如此反复.考虑到该博客平台的变化.              看来,这次最终逃脱被"待审核",看来再也不用受这个困扰了,希望以后CSDN可以在 ...

  9. HDU2149-Public Sale

    Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  10. Android UI法宝发展Angrytools

    最近很多人问我,个人App开发商如何设计UI. 其实这是个人开发者最头疼,谁在搞技术,真的不能做的一切.不可能花大量的时间去切图,去做原型设计,去做美工. 当然,尽管我们设计不出那么复杂,静止的UI. ...