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 ...
随机推荐
- var a=b=c=1; 和 var a=1, b=2, c=3; 的区别。
function test(){ var a=b=c=1; var a=1, b=2,c=3; } 1中b\c 为全局变量, a为私量 2中a\b\c为私量
- 面试中常问的有关随机选取k个数的总结
1.在半径为1的圆中随机选取一点. 2.给定一个未知长度的整数流,如何随机选取一个数 3.给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字).如何才能从这个无穷尽的流 ...
- 常用str函数
echo stripslashes("Who\'s Bill Gates?"),'<br />';//去掉反斜杠 echo strtolower("AABbb ...
- 我的前端故事----Ajax方式和jsonp的实现区别
很久没有更新博客了,毕业2个月了,这段时间一直在忙于工作,一直没有时间更新,最近做的活动突然发现之前的经验居然忘记了...索性想想还是重新开始用博客记录平日里的工作经验吧,吐槽就到这里了,这篇记录的是 ...
- css的书写规范+常用
格式化: body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blo ...
- Javascript初学篇章_8(事件)
事件 HTML 事件是发生在 HTML 元素上的事情.例如用户点击按钮时,点击也是一个事件.事件可以用于处理表单验证,用户输入,用户行为及浏览器动作,如: 页面加载时触发事件 页面关闭时触发事件 用户 ...
- Unity3D UGUI之ScrollView弹簧效果
unity3d版本5.3.2p4 UGUI中ScrollView包含Viewport(Content) ScrollView包含脚本.其Movement Type一共3个选项.Elastic就是弹簧效 ...
- WPF整理-Mutex确保Application单例运行
有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来. 我们可以用Mutex来实现 打开App.xaml.cs,在App类中添加如下内容 ...
- ubuntu自定义分辨率
首先说下为啥要专门敲个文章来说明这个问题,因为我最近入手了一台分辨率为3200*1800的高分辨率笔记本,但使用的时候发现现在的操作系统及其诸多软件对高分辨率屏幕的支持真的是太烂,字体发虚或者变得非常 ...
- Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码
Linux 部署ASP.NET SQLite 应用 的坎坷之旅.文章底部 附示例代码. 有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上了坑之路,不过最后算是完美解决问题,遂记 ...