ASP.NET MVC5网站开发之登录、验证和注销管理员篇

上次业务逻辑和展示层的架构都写了,可以开始进行具体功能的实现,这次先实现管理员的登录验证和注销功能。

一、业务逻辑层1、实现256散列加密方法。

Ninesky.Core【右键】-> 添加->文件夹,输入文件夹名General。

General文件夹【右键】->添加->类,输入类名Security。

引用System.Security.Cryptography命名空间(1),并实现SHA256静态加密方法。

ASP.NET MVC5网站开发之登录、验证和注销管理员篇

2、Administrator模型类

ASP.NET MVC5网站开发之登录、验证和注销管理员篇

Ninesky.Core【右键】-> 添加->类,输入类名Administrator。

添加引用System.ComponentModel.DataAnnotations; 完成的类代码

using System; using System.ComponentModel.DataAnnotations; namespace Ninesky.Core { /// <summary> /// 管理员模型 /// </summary> public class Administrator { [Key] public int AdministratorID { get; set; } /// <summary> /// 帐号 /// </summary> [Required(ErrorMessage = "必须输入{0}")] [StringLength(30, MinimumLength = 4, ErrorMessage ="{0}长度为{2}-{1}个字符")] [Display(Name ="帐号")] public string Accounts { get; set; } /// <summary> /// 密码 /// </summary> [DataType(DataType.Password)] [Required(ErrorMessage = "必须输入{0}")] [StringLength(256,ErrorMessage = "{0}长度少于{1}个字符")] [Display(Name = "密码")] public string Password { get; set; } /// <summary> /// 登录IP /// </summary> [Display(Name = "登录IP")] public string LoginIP { get; set; } /// <summary> /// 登录时间 /// </summary> [Display(Name = "登录时间")] public Nullable<DateTime> LoginTime { get; set; } /// <summary> /// 创建时间 /// </summary> [Display(Name = "创建时间")] public DateTime CreateTime { get; set; } } }

3、数据上下文

打开Ninesky.Core->NineskyContext.cs 添加Administrators属性

ASP.NET MVC5网站开发之登录、验证和注销管理员篇

红框内为添加内容。

4、AdministratorManager管理类

ASP.NET MVC5网站开发之登录、验证和注销管理员篇

Ninesky.Core【右键】-> 添加->类,输入类名AdministratorManager。

类继承自BaseManager<Administrator>。

为类添加Ninesky.Core.Types引用。

using Ninesky.Core.Types; using System; namespace Ninesky.Core { public class AdministratorManager : BaseManager<Administrator> { /// <summary> /// 添加 /// </summary> /// <param>管理员实体</param> /// <returns></returns> public override Response Add(Administrator admin) { Response _resp = new Response(); if (HasAccounts(admin.Accounts)) { _resp.Code = 0; _resp.Message = "帐号已存在"; } else _resp = base.Add(admin); return _resp; } /// <summary> /// 修改密码 /// </summary> /// <param>主键</param> /// <param>新密码【密文】</param> /// <returns></returns> public Response ChangePassword(int administratorID, string password) { Response _resp = new Response(); var _admin = Find(administratorID); if (_admin == null) { _resp.Code = 0; _resp.Message = "该主键的管理员不存在"; } else { _admin.Password = password; _resp = Update(_admin); } return _resp; } /// <summary> /// 删除 /// </summary> /// <param>主键</param> /// <returns></returns> public override Response Delete(int administratorID) { Response _resp = new Response(); if (Count() == 1) { _resp.Code = 0; _resp.Message = "不能删除唯一的管理员帐号"; } else _resp = base.Delete(administratorID); return _resp; } /// <summary> /// 查找 /// </summary> /// <param>帐号</param> /// <returns></returns> public Administrator Find(string accounts) { return base.Repository.Find(a => a.Accounts == accounts); } /// <summary> /// 帐号是否存在 /// </summary> /// <param>帐号</param> /// <returns></returns> public bool HasAccounts(string accounts) { return base.Repository.IsContains(a => a.Accounts.ToUpper() == accounts.ToUpper()); } /// <summary> /// 更新登录信息 /// </summary> /// <param>主键</param> /// <param>IP地址</param> /// <param>时间</param> /// <returns></returns> public Response UpadateLoginInfo(int administratorID, string ip, DateTime time) { Response _resp = new Response(); var _admin = Find(administratorID); if (_admin == null) { _resp.Code = 0; _resp.Message = "该主键的管理员不存在"; } else { _admin.LoginIP = ip; _admin.LoginTime = time; _resp = Update(_admin); } return _resp; } /// <summary> /// 验证 /// </summary> /// <param>帐号</param> /// <param>密码【密文】</param> /// <returns>Code:1-成功;2-帐号不存在;3-密码错误</returns> public Response Verify(string accounts, string password) { Response _resp = new Response(); var _admin = base.Repository.Find(a => a.Accounts == accounts); if (_admin == null) { _resp.Code = 2; _resp.Message = "帐号为:【" + accounts + "】的管理员不存在"; } else if (_admin.Password == password) { _resp.Code = 1; _resp.Message = "验证通过"; } else { _resp.Code = 3; _resp.Message = "帐号密码错误"; } return _resp; } } }

二、展示层实现

首先,添加css。

Ninesky.Web->Content【右键】->添加->试样表,输入名称StyleControl。

打开Ninesky.Web->App_Start->BundleConfig.cs。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjyjpj.html