系列目录

我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先完成了,要不权限是讲不下去了

把我们之前的表更新到EF中去

登录在Account控制器,所以我们要添加Account的Model,BLL,DAL

AccountModel我们已经创建好了,下面是DAL和BLL的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App.Models;namespace App.IDAL
{public interface IAccountRepository{SysUser Login(string username, string pwd);}
}

IAccountRepository

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App.Models;
using App.IDAL;namespace App.DAL
{public class AccountRepository : IAccountRepository,IDisposable{public SysUser Login(string username, string pwd){using (DBContainer db = new DBContainer()){SysUser user = db.SysUser.SingleOrDefault(a => a.UserName == username && a.Password == pwd);return user;}}public void Dispose(){ }}
}

AccountRepository

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App.Models;namespace App.IBLL
{public interface IAccountBLL{SysUser Login(string username, string pwd);}
}

IAccountBLL

using System.Linq;
using System.Text;
using App.IBLL;
using App.BLL.Core;
using Microsoft.Practices.Unity;
using App.IDAL;
using App.Models;
using App.Common;
namespace App.BLL
{public class AccountBLL:BaseBLL,IAccountBLL{[Dependency]public IAccountRepository accountRepository { get; set; }public SysUser Login(string username, string pwd){return accountRepository.Login(username, pwd);}}
}

AccountBLL

注入到容器

 container.RegisterType<IAccountBLL, AccountBLL>();container.RegisterType<IAccountRepository, AccountRepository>();

然后回到Account的控制器上

定义

[Dependency]public IAccountBLL accountBLL { get; set; }

在 public JsonResult Login(string UserName, string Password, string Code)

方法下添加代码

  if (Session["Code"] == null)return Json(JsonHandler.CreateMessage(0, "请重新刷新验证码"), JsonRequestBehavior.AllowGet);if (Session["Code"].ToString().ToLower() != Code.ToLower())return Json(JsonHandler.CreateMessage(0, "验证码错误"), JsonRequestBehavior.AllowGet);SysUser user = accountBLL.Login(UserName, ValueConvert.MD5(Password));if (user == null){return Json(JsonHandler.CreateMessage(0, "用户名或密码错误"), JsonRequestBehavior.AllowGet);}else if (!Convert.ToBoolean(user.State))//被禁用
            {return Json(JsonHandler.CreateMessage(0, "账户被系统禁用"), JsonRequestBehavior.AllowGet);}AccountModel account = new AccountModel();account.Id = user.Id;account.TrueName = user.TrueName;Session["Account"] = account;return Json(JsonHandler.CreateMessage(1, ""), JsonRequestBehavior.AllowGet);

View Code

其中用到一个加密类处理,这里用的是一个MD5大家可以用自己的加密方式

然而这个类里面包含了其他的一些字符串处理,算是在这里共享给大家。不合适就删掉了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Security.Cryptography;
namespace YmNets.Common
{public static partial class ValueConvert{/// <summary>/// 使用MD5加密字符串/// </summary>/// <param name="str">待加密的字符</param>/// <returns></returns>public static string MD5(this string str){if (string.IsNullOrEmpty(str)){return string.Empty;}MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();byte[] arr = UTF8Encoding.Default.GetBytes(str);byte[] bytes = md5.ComputeHash(arr);str = BitConverter.ToString(bytes);//str = str.Replace("-", "");return str;}/// <summary>/// 将最后一个字符串的路径path替换/// </summary>/// <param name="str"></param>/// <param name="path"></param>/// <returns></returns>public static string Path(this string str, string path){int index = str.LastIndexOf('\\');int indexDian = str.LastIndexOf('.');return str.Substring(0, index + 1) + path + str.Substring(indexDian);}public static List<string> ToList(this string ids){List<string> listId = new List<string>();if (!string.IsNullOrEmpty(ids)){var sort = new SortedSet<string>(ids.Split(','));foreach (var item in sort){listId.Add(item);}}return listId;}/// <summary>/// 从^分割的字符串中获取多个Id,先是用 ^ 分割,再使用 & 分割/// </summary>/// <param name="ids">先是用 ^ 分割,再使用 & 分割</param>/// <returns></returns>public static List<string> GetIdSort(this string ids){List<string> listId = new List<string>();if (!string.IsNullOrEmpty(ids)){var sort = new SortedSet<string>(ids.Split('^').Where(w => !string.IsNullOrWhiteSpace(w) && w.Contains('&')).Select(s => s.Substring(0, s.IndexOf('&'))));foreach (var item in sort){listId.Add(item);}}return listId;}/// <summary>/// 从,分割的字符串中获取单个Id/// </summary>/// <param name="ids"></param>/// <returns></returns>public static string GetId(this string ids){if (!string.IsNullOrEmpty(ids)){var sort = new SortedSet<string>(ids.Split('^').Where(w => !string.IsNullOrWhiteSpace(w) && w.Contains('&')).Select(s => s.Substring(0, s.IndexOf('&'))));foreach (var item in sort){if (!string.IsNullOrWhiteSpace(item)){return item;}}}return null;}/// <summary>/// 将String转换为Dictionary类型,过滤掉为空的值,首先 6 分割,再 7 分割/// </summary>/// <param name="value"></param>/// <returns></returns>public static Dictionary<string, string> StringToDictionary(string value){Dictionary<string, string> queryDictionary = new Dictionary<string, string>();string[] s = value.Split('^');for (int i = 0; i < s.Length; i++){if (!string.IsNullOrWhiteSpace(s[i]) && !s[i].Contains("undefined")){var ss = s[i].Split('&');if ((!string.IsNullOrEmpty(ss[0])) && (!string.IsNullOrEmpty(ss[1]))){queryDictionary.Add(ss[0], ss[1]);}}}return queryDictionary;}/// <summary>/// 得到对象的 Int 类型的值,默认值0/// </summary>/// <param name="Value">要转换的值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>public static int GetInt(this object Value){return GetInt(Value, 0);}/// <summary>/// 得到对象的 Int 类型的值,默认值0/// </summary>/// <param name="Value">要转换的值</param>/// <param name="defaultValue">如果转换失败,返回的默认值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>public static int GetInt(this object Value, int defaultValue){if (Value == null) return defaultValue;if (Value is string && Value.GetString().HasValue() == false) return defaultValue;if (Value is DBNull) return defaultValue;if ((Value is string) == false && (Value is IConvertible) == true){return (Value as IConvertible).ToInt32(CultureInfo.CurrentCulture);}int retVal = defaultValue;if (int.TryParse(Value.ToString(), NumberStyles.Any, CultureInfo.CurrentCulture, out retVal)){return retVal;}else{return defaultValue;}}/// <summary>/// 得到对象的 String 类型的值,默认值string.Empty/// </summary>/// <param name="Value">要转换的值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值string.Empty</returns>public static string GetString(this object Value){return GetString(Value, string.Empty);}/// <summary>/// 得到对象的 String 类型的值,默认值string.Empty/// </summary>/// <param name="Value">要转换的值</param>/// <param name="defaultValue">如果转换失败,返回的默认值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值 。</returns>public static string GetString(this object Value, string defaultValue){if (Value == null) return defaultValue;string retVal = defaultValue;try{var strValue = Value as string;if (strValue != null){return strValue;}char[] chrs = Value as char[];if (chrs != null){return new string(chrs);}retVal = Value.ToString();}catch{return defaultValue;}return retVal;}/// <summary>/// 得到对象的 DateTime 类型的值,默认值为DateTime.MinValue/// </summary>/// <param name="Value">要转换的值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回的默认值为DateTime.MinValue </returns>public static DateTime GetDateTime(this object Value){return GetDateTime(Value, DateTime.MinValue);}/// <summary>/// 得到对象的 DateTime 类型的值,默认值为DateTime.MinValue/// </summary>/// <param name="Value">要转换的值</param>/// <param name="defaultValue">如果转换失败,返回默认值为DateTime.MinValue</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回的默认值为DateTime.MinValue</returns>public static DateTime GetDateTime(this object Value, DateTime defaultValue){if (Value == null) return defaultValue;if (Value is DBNull) return defaultValue;string strValue = Value as string;if (strValue == null && (Value is IConvertible)){return (Value as IConvertible).ToDateTime(CultureInfo.CurrentCulture);}if (strValue != null){strValue = strValue.Replace("年", "-").Replace("月", "-").Replace("日", "-").Replace("点", ":").Replace("时", ":").Replace("分", ":").Replace("秒", ":");}DateTime dt = defaultValue;if (DateTime.TryParse(Value.GetString(), out dt)){return dt;}return defaultValue;}/// <summary>/// 得到对象的布尔类型的值,默认值false/// </summary>/// <param name="Value">要转换的值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值false</returns>public static bool GetBool(this object Value){return GetBool(Value, false);}/// <summary>/// 得到对象的 Bool 类型的值,默认值false/// </summary>/// <param name="Value">要转换的值</param>/// <param name="defaultValue">如果转换失败,返回的默认值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值false</returns>public static bool GetBool(this object Value, bool defaultValue){if (Value == null) return defaultValue;if (Value is string && Value.GetString().HasValue() == false) return defaultValue;if ((Value is string) == false && (Value is IConvertible) == true){if (Value is DBNull) return defaultValue;try{return (Value as IConvertible).ToBoolean(CultureInfo.CurrentCulture);}catch { }}if (Value is string){if (Value.GetString() == "0") return false;if (Value.GetString() == "1") return true;if (Value.GetString().ToLower() == "yes") return true;if (Value.GetString().ToLower() == "no") return false;}///  if (Value.GetInt(0) != 0) return true;bool retVal = defaultValue;if (bool.TryParse(Value.GetString(), out retVal)){return retVal;}else return defaultValue;}/// <summary>/// 检测 GuidValue 是否包含有效的值,默认值Guid.Empty/// </summary>/// <param name="GuidValue">要转换的值</param>/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值Guid.Empty</returns>public static Guid GetGuid(string GuidValue){try{return new Guid(GuidValue);}catch { return Guid.Empty; }}/// <summary>/// 检测 Value 是否包含有效的值,默认值false/// </summary>/// <param name="Value"> 传入的值</param>/// <returns> 包含,返回true,不包含,返回默认值false</returns>public static bool HasValue(this string Value){if (Value != null){return !string.IsNullOrEmpty(Value.ToString());}else return false;}}
}

ValueConvert.cs

回到前端把alert(1);替换以下代码

 $.post('/Account/Login', { UserName: $("#UserName").val(), Password: $("#Password").val(), Code: $("#ValidateCode").val() },function (data) {if (data.type == "1") {window.location = "/Home/Index"} else {$("#mes").html(data.message);}$("#Loading").hide();}, "json");return false;

可以登录了,大家试一下吧!帐号admin,密码admin123

ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录相关推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 日程管理   http:// ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...) 开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联 ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试

    ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试 1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Uni ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级

    系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-easyui构建前端页面框架[附源码]

    系列目录 前言 为了符合后面更新后的重构系统,本文于2016-10-31日修正一些截图,文字 我们有了一系列的解决方案,我们将动手搭建新系统吧. 后台系统没有多大的UI视觉,这次我们采用的是标准的左右 ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts

    系列目录 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入

    系列目录 前言: 有时候我们系统需要开放数据给手机App端或其他移动设备,不得不说Asp.net WebApi是目前首选 本节记录Asp.net MVC WebApi怎么利用Unity注入.系列开头已 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析

    系列目录 任务调度系统是什么:他是一个类似Sql Server的代理,他可以帮助你定时处理一些SQL事务 但是他又远远超过代理,因为他还能定时执行一些C#方法,比如定时发送邮件等 总结:任务可以执行的 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理

    前言 回顾上一节,我们熟悉的了解了消息的请求和响应,这一节我们来建立数据库的表,表的设计蛮复杂 你也可以按自己所分析的情形结构来建表 必须非常熟悉表的结果才能运用这张表,这表表的情形涵盖比较多 思维导 ...

最新文章

  1. 计算机加入域后远程桌面无法登陆域账户
  2. Spring: DispacherServlet和ContextLoaderListener中的WebApplicationContext的关系
  3. oracle 让人抓狂的错误之 null值 与 无值(无结果)-开发系列(一)
  4. WinSock I/O 模型 -- OVERLAPPED I/O 模型
  5. smoothstep
  6. 从template到DOM(Vue.js源码角度看内部运行机制)
  7. android 电平信号状态识别View平局
  8. ngnix学习(二)ngnix常用命令
  9. git svn clone
  10. 修改Chrome的User Agent的方法 真实有效
  11. 百度和知乎哪个引流效果好?知乎和百度的有什么区别?
  12. PR开场片头模板 恐怖惊悚电影侦探节目logo展示PR模板
  13. sd和sem啥区别_标准差SD和标准误sem的区别
  14. [市场前景]无线流媒体:无线运营商潜在的金矿?(转载)
  15. 通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺
  16. 什么是强化学习呢,来涨波知识
  17. 跨境专线物流都有哪些专线
  18. android表格可以编辑,手机wps中如何编辑表格
  19. WIN10+CGAL+VS2017配置
  20. TabLayout 设置指示器宽度问题

热门文章

  1. 开发中总结的dart相关的技巧
  2. 信息系统项目管理案例3
  3. jsp mysql demo_利用JSP+MYSQL实现注册+登入的demo----0001
  4. php gd 行间距设置,PHP动态修改GD库扩展问题
  5. PPT 下载 | 神策数据孙文亮:客户全生命周期管理从方法到实践全解析
  6. 短融网杨夏耘:数据如何驱动金融科技业务升级?
  7. 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
  8. 利用 Rize 来进行 UI 测试或 E2E 测试
  9. php sockent通信
  10. word操作快捷键记录