zoukankan      html  css  js  c++  java
  • 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 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

  • 相关阅读:
    MSP430的CAN通信发送
    Arduino 101/Genuino101使用-第2篇
    CC2541调试问题记录-第一篇
    STM32运行FreeRTOS出现prvTaskExitError错误死机
    Arduino 101/Genuino101使用-第一篇
    LAUNCHXL-28379D入门学习-第一篇
    蒸汽机的原理
    等高线相似性匹配
    cad转shapefile文件
    ArcGIS坐标转换
  • 原文地址:https://www.cnblogs.com/ymnets/p/3452423.html
Copyright © 2011-2022 走看看