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; }
}
}
using Ninesky.Core.Types;
using System;
namespace Ninesky.Core
{
public class AdministratorManager : BaseManager<Administrator>
{
/// <summary>
/// 添加
/// </summary>
/// <param name="admin">管理员实体</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 name="administratorID">主键</param>
/// <param name="password">新密码【密文】</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 name="administratorID">主键</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 name="accounts">帐号</param>
/// <returns></returns>
public Administrator Find(string accounts)
{
return base.Repository.Find(a => a.Accounts == accounts);
}
/// <summary>
/// 帐号是否存在
/// </summary>
/// <param name="accounts">帐号</param>
/// <returns></returns>
public bool HasAccounts(string accounts)
{
return base.Repository.IsContains(a => a.Accounts.ToUpper() == accounts.ToUpper());
}
/// <summary>
/// 更新登录信息
/// </summary>
/// <param name="administratorID">主键</param>
/// <param name="ip">IP地址</param>
/// <param name="time">时间</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 name="accounts">帐号</param>
/// <param name="password">密码【密文】</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;
}
}
}
using System.Web;
using System.Web.Mvc;
namespace Ninesky.Web.Areas.Control
{
/// <summary>
/// 管理员身份验证类
/// </summary>
public class AdminAuthorizeAttribute : AuthorizeAttribute
{
/// <summary>
/// 重写自定义授权检查
/// </summary>
/// <returns></returns>
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Session["AdminID"] == null) return false;
else return true;
}
/// <summary>
/// 重写未授权的 HTTP 请求处理
/// </summary>
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("~/Control/Admin/Login");
}
}
}
namespace Ninesky.Web.Areas.Control.Models
{
/// <summary>
/// 登录模型
/// </summary>
public class LoginViewModel
{
/// <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(20,MinimumLength =6, ErrorMessage = "{0}长度{2}-{1}个字符")]
[Display(Name = "密码")]
public string Password { get; set; }
}
}
/// <summary>
/// 登录
/// </summary>
/// <returns></returns>
[AllowAnonymous]
public ActionResult Login()
{
return View();
}
@model Ninesky.Web.Areas.Control.Models.LoginViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>登录</title>
@Styles.Render("~/Content/controlcss")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
<div class="loginform">
<div class="form-horizontal">
<h2 class="text-primary">登录</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group form-group-lg">
@Html.EditorFor(model => model.Accounts, new { htmlAttributes = new { @class = "form-control", placeholder = "帐号" } })
@Html.ValidationMessageFor(model => model.Accounts, "", new { @class = "text-danger" })
</div>
<div class="form-group form-group-lg">
@Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control", placeholder = "密码" } })
@Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" })
</div>
<div class="form-group form-group-lg">
<input type="submit" value="登录" class="btn btn-default pull-right" />
</div>
}
</div>
</div>
</body>
</html>
[AllowAnonymous]
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Login(LoginViewModel loginViewModel)
{
if(ModelState.IsValid)
{
string _passowrd = Security.SHA256(loginViewModel.Password);
var _response = adminManager.Verify(loginViewModel.Accounts, _passowrd);
if (_response.Code == 1)
{
var _admin = adminManager.Find(loginViewModel.Accounts);
Session.Add("AdminID", _admin.AdministratorID);
Session.Add("Accounts", _admin.Accounts);
_admin.LoginTime = DateTime.Now;
_admin.LoginIP = Request.UserHostAddress;
adminManager.Update(_admin);
return RedirectToAction("Index", "Home");
}
else if (_response.Code == 2) ModelState.AddModelError("Accounts", _response.Message);
else if (_response.Code == 3) ModelState.AddModelError("Password", _response.Message);
else ModelState.AddModelError("",_response.Message);
}
return View(loginViewModel);
}
/// <summary>
/// 注销
/// </summary>
/// <returns></returns>
public ActionResult Logout()
{
Session.Clear();
return RedirectToAction("Login");
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有