原文: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. effective c++ 条款4 make sure that objects are initialized before they are used

    1 c++ 类的数据成员的初始化发生在构造函数前 class InitialData { public: int data1; int data2; InitialData(int a, int b) ...

  2. Win7 IIS配置 applicationHost.config 错误:无法识别的特性“setProfileEnvironment” 解决方法

    Win7下配置IIS时容易出现这样的错误提示:这是百度知道上面另一个人提问的图,我的显示行号133 解决方法: 到C:\inetpub\history中找到最近一次的applicationHost.c ...

  3. Android自带样式

    Android系统自带样式: android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式 android:the ...

  4. poj 2182 Lost Cows(段树精英赛的冠军)

    主题链接:http://poj.org/problem? id=2182 Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  5. C#中对于float,double,decimal的误解

    原文:C#中对于float,double,decimal的误解 一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖. 浮点型 如果我们在代 ...

  6. CF(427D-Match &amp; Catch)后缀数组应用

    题意:给两个字符串,求一个最短的子串.使得这个子串在两个字符串中出现的次数都等于1.出现的定义为:能够重叠的出现. 解法:后缀数组的应用.从小枚举长度.假设一个长度len合法的话:则一定存在这个样的s ...

  7. iphone内容开发技术学习

    一.iOS基础 1 开发环境搭建以及IOS组件.框架的概要介绍. 2 mac操作系统与iOS操作系统 3 xcode IDE开发环境的初始 二.C语言基础 1数据类型.表达式与控制流程语句 2数组.函 ...

  8. 举例说,Linux核心名单(两)

    使用列表 我认为最好的方式,成为熟悉的核心列表功能是看一些简单的例子,素材去更好的理解链表. 以下是一个样例.包括创建.加入.删除和遍历链表. <span style="font-si ...

  9. 右键菜单中的好友列表Ajax直接跳转请求到登陆页面

    今天,我们正在做正确的菜单.当点击重命名Ajax要求,并且不发送数据的背景,但直接跳到主页. 我百思不得其解,后来我发现在头版的一个问题: <li><a href='#' oncli ...

  10. Java设计模式(三)-修饰模式

    我们都知道.能够使用两种方式给一个类或者对象加入行为. 一是使用继承.继承是给一个类加入行为的比較有效的途径.通过使用继承,能够使得子类在拥有自身方法的同一时候,还能够拥有父类的方法.可是使用继承是静 ...