MVC5 网站开发实践 2.1、管理员登陆
目录
1、 创建SHA256加密方法。
在Data项目中添加文件夹【Security】,在文件夹中添加类 【Encryption】,在类中写一个SHA256加密方法。
using System;
using System.Security.Cryptography;
using System.Text; namespace Ninesky.Data.Security
{
/// <summary>
/// 加密类
/// <remarks>
/// 创建:2014.12.13
/// </remarks>
/// </summary>
public class Encryption
{
/// <summary>
/// 256位散列加密
/// </summary>
/// <param name="plainText">明文</param>
/// <returns>密文</returns>
public static string Sha256(string plainText)
{
SHA256Managed _sha256 = new SHA256Managed();
byte[] _cipherText = _sha256.ComputeHash(Encoding.Default.GetBytes(plainText));
return Convert.ToBase64String(_cipherText);
}
}
}
2、 Website项目添加对 Data项目的引用。
3、添加登录视图模型
在Config区域的Models文件夹添加视图模型类【LoginViewModel】,代码如下:
using System.ComponentModel.DataAnnotations; namespace Ninesky.Website.Areas.Config.Models
{
/// <summary>
/// 登陆模型
/// <remarks>
/// 创建:2014.12.13
/// </remarks>
/// </summary>
public class LoginViewModel
{
[StringLength(20, MinimumLength = 2, ErrorMessage = "{0}长度{2}-{1}个字符")]
[Display(Name = "账号")]
public string Account { get; set; } [StringLength(20, MinimumLength = 4, ErrorMessage = "{0}长度{2}-{1}个字符")]
[Display(Name = "密码")]
public string Password { get; set; }
}
}
4、添加管理员控制器
在config的Controller文件夹上点右键创建控制器【MVC5控制器-空】,名称输入【AdministratorController】,在控制器
添加一个【Login】action,和一个HttpPost方式的【Login】action。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Ninesky.User;
using Ninesky.Data.Security; namespace Ninesky.Website.Areas.Config.Controllers
{
/// <summary>
/// 管理员控制器
/// <remarks>
/// 创建:2014.12.13
/// </remarks>
/// </summary>
public class AdministratorController : Controller
{
private AdministratorService _adminService = new AdministratorService(ContextFactory.GetCurrentContext());
// 登陆
public ActionResult Login()
{
return View();
} [ValidateAntiForgeryToken()]
[HttpPost]
public ActionResult Login(Models.LoginViewModel loginVM)
{
if (ModelState.IsValid)
{
var _admin = _adminService.Find(a => a.Account == loginVM.Account);
if (_admin == null) ModelState.AddModelError("Account", "账号不存在");
else if (Encryption.Sha256(loginVM.Password) != _admin.Password) ModelState.AddModelError("Password", "密码不正确");
else
{
_admin.LoginTime = System.DateTime.Now;
_admin.LoginIp = Request.UserHostAddress;
_adminService.Update(_admin);
Session.Add("Account", loginVM.Account);
Session.Add("Password", _admin.Password);
return RedirectToAction("Index", "Home");
}
}
return View(loginVM);
}
}
}
HttpPost方式的action中先验证模型是否有错误,然后验证用户是否存在和密码是否正确,通过后更新管理员登录时间和ip,将账号和密码保存到session中,然后跳转到Home/index页面。
5、 添加视图。
在”Login“action上点右键添加视图。

修改代码稍作修改,添加对bootstrap的引用,代码如下:

6、启用迁移。
在程序包管理控制台输入“Enable-Migrations”命令启用迁移。

然后打开Website项目Migrations文件夹下的“Configuration.cs”,将构造函数中的“AutomaticMigrationsEnabled = false;”改为“AutomaticMigrationsEnabled = true;”
7、创建数据库
再次在程序包管理控制台输入“Update-Database”命令来创建数据库。然后在服务器资源管理器中查看刚创建
8、添加一个管理员账号
数据库的管理员表的数据。然后在表中添加一个管理员,账号”admin”,密码”jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=“ 如图

9、测试登录。
在浏览器中打开登录视图,账号和密码都输入”admin“,测试一下可以正常调转。

============================
代码:http://pan.baidu.com/s/1mgtBbxI
MVC5 网站开发实践 2.1、管理员登陆的更多相关文章
- MVC5 网站开发实践 2.2、管理员身份验证
上次完成了管理员的登录,这次要解决对管理员登录后的验证,采用AuthorizeAttribute属性的方式.之前还要解决几个问题,然后才重写验证类,最后稍微改一下界面. 目录 MVC5 网站开发实践 ...
- MVC5 网站开发实践 概述
目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1.建立项目 MVC5 网站开发实践 2.后台管理 MVC5 网站开发实践 2.1.管理员登陆 MVC5 网站开发实践 2.2.管理 ...
- MVC5 网站开发实践 2、后台管理
目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1.建立项目 从这一部分开始做后台管理,首先是基本框架的 一.Data项目 1.项目添加EntityFramework引用 在Data项 ...
- MVC5 网站开发实践 1、建立项目
目录 MVC5 网站开发实践 概述 一.建立项目 1.建立团队项目 在办公室和家里使用不同的电脑,为了方便代码的共享将项目建立为团队项目. 如图打开vs2013→新建→团队项目(图1),会自动 ...
- ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除
本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...
- ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询
上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构
咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章
上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据. 目录: ASP.N ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表
显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据 目录 ASP.N ...
随机推荐
- javascript--Math相关
最值:Math.max(1,2,3,5);//5 Math.min(1,2,3,5);//1 数组最值:var a=[1,2,3,5]; Math.max.apply(null, a);//最大值 M ...
- Thisgood
this is good test print 'haha'
- python列表副本
a=[1,2,3] b=[4,5,6] a=a+b #创建含a和b的副本的新列表 a [1, 2, 3, 4, 5, 6] b [4, 5, 6] c=a+b #创建含a和b的副本的新列表c [1, ...
- C#SerialPort如何读取串口数据并显示在TextBox上
SerialPort中串口数据的读取与写入有较大的不同.由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取.一.线程实时读串口:二.事件触发方式实现. 由于线程实时读串口的效率不是十分高 ...
- Windows7-USB-DVD-tool提示不能拷贝文件的处理
打开 Windows7-USB-DVD-tool所在目录的log/日志 01/28/2016 02:21:02: Drive selected, H:\; Ready01/28/2016 02:21 ...
- VMware创建Linux虚拟机并安装CentOS(一)
在VMware中新建虚拟机,在新建虚拟机向导中,选择“自定义(高级)”选项,鼠标单击“继续”按钮 选择VMware的版本workstation9.0(VMware版本对硬盘.内存.cpu等硬件的支持大 ...
- ThreadPoolExecutor源码学习(1)-- 主要思路
ThreadPoolExecutor是JDK自带的并发包对于线程池的实现,从JDK1.5开始,直至我所阅读的1.6与1.7的并发包代码,从代码注释上看,均出自Doug Lea之手,从代码上看JDK1. ...
- [转]Android ListView 与 RecyclerView 对比浅析—缓存机制
从源码角度剖析ListView 与 RecyclerView 缓存机制的不同 https://zhuanlan.zhihu.com/p/23339185 原文地址:http://dev.qq.com/ ...
- eclipse导入项目出现叹号处理方法:
1.选中该项目名称,单击右键 2.点击Properties 3.选中Java Build Path 4. 5. 6. 7.出现红叉的解决办法 8. 9. 10. 11. 12. 按照以上步骤操作就可以 ...
- 实现滑动条与表单中的input中的value交互
最近在写一个考试系统的项目,遇到一些比较有意思的小知识,在这里分享给大家 下面是一个滑动条与input中的value值的交互,即滑动条的颜色会跟随给定input的value值实时变化,虽然表单中的ra ...