原文: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. easyui动力头 &amp;&amp; 动态加入tabs

    今天,在实现了业务时的,我们需要根据后台操作,以产生多个数据tab页,而且每一个tab页表格根据需要动态生成的标题数据. 返回后台数据格例如,下面的公式: 实现方法例如以下: //$("#c ...

  2. Property &#39;sqlSessionFactory&#39; or &#39;sqlSessionTemplate&#39; are required

    之前一直用mybatis+mybatis-spring-1.1.1,系统升级mybatis使用后 mybatis-spring-1.2.2, 再其他配置均为改动的情况下执行出错: Property ' ...

  3. Java程序猿从底层到CTO的技术路线图

    首先.附一张图片展示所在各个阶段的工作职能: 其次.文字型描写叙述所在各个阶段的工作职能: Java程序猿 高级特性 反射.泛型.凝视符.自己主动装箱和拆箱.枚举类.可变參数.可变返回类型.增强循环. ...

  4. 指定为文件头部Expires要么Cache-Control

    Cache-Control :private,no-cache.must-revalidate,max-age Expires指定页面过期时间 response.setContentType(&quo ...

  5. 【世外桃源】福音节目 swtychina.com

    [世外桃源]福音节目 今天小编满怀热情,带着激动地心情,颤抖的双手,以“大无畏的精神,高山仰止的情操”为大家郑重推荐很好的一个福音节目: <世外桃源>, 哎,不对,貌似从2013年初开始& ...

  6. flashfxp3.41中文版注册码:(适合最新版本)

    推荐(尚未被封的 Realkey) FLASHFXPvACq2ssbvAAAAAC1W7cJKQTzmx77zmqJICvA7d3WnU tWNXdrp8YuERRFdIvXfOPbcpABkVix2 ...

  7. CSS十问——好奇心+刨根问底=CSSer (转)

    最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...

  8. 栈上分配存储器的方法 alloca 抽样

    声明一个局部变量,必须分配在堆栈上,但有或没有它的方法 当然,,那是 alloca 下面的代码显示了可变长度参数转换,alloca 要使用 int main(int argc, char ** arg ...

  9. Java网络编程注意事项3

    如何使用POST请求和GET请求Web网站发送请求,下面的参考代码: import java.io.BufferedReader; import java.io.InputStream; import ...

  10. 排序算法c语言描述---选择排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析 ...