构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录

来源:互联网 发布:什么是大数据含义 编辑:程序博客网 时间:2024/04/28 15:12
系列目录

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

把我们之前的表更新到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

0 0
原创粉丝点击