300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录

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

时间:2023-04-11 00:15:52

相关推荐

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

系列目录

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

把我们之前的表更新到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 mon;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 mon{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 = puteHash(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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。