目录

MVC5 网站开发实践  概述

MVC5 网站开发实践  1、建立项目

MVC5 网站开发实践  2、后台管理

 

1、 创建SHA256加密方法。

在Data项目中添加文件夹【Security】,在文件夹中添加类 【Encryption】,在类中写一个SHA256加密方法。

  1. using System;
  2. using System.Security.Cryptography;
  3. using System.Text;
  4.  
  5. namespace Ninesky.Data.Security
  6. {
  7. /// <summary>
  8. /// 加密类
  9. /// <remarks>
  10. /// 创建:2014.12.13
  11. /// </remarks>
  12. /// </summary>
  13. public class Encryption
  14. {
  15. /// <summary>
  16. /// 256位散列加密
  17. /// </summary>
  18. /// <param name="plainText">明文</param>
  19. /// <returns>密文</returns>
  20. public static string Sha256(string plainText)
  21. {
  22. SHA256Managed _sha256 = new SHA256Managed();
  23. byte[] _cipherText = _sha256.ComputeHash(Encoding.Default.GetBytes(plainText));
  24. return Convert.ToBase64String(_cipherText);
  25. }
  26. }
  27. }

 

2、 Website项目添加对 Data项目的引用。

3、添加登录视图模型

在Config区域的Models文件夹添加视图模型类【LoginViewModel】,代码如下:

  1. using System.ComponentModel.DataAnnotations;
  2.  
  3. namespace Ninesky.Website.Areas.Config.Models
  4. {
  5. /// <summary>
  6. /// 登陆模型
  7. /// <remarks>
  8. /// 创建:2014.12.13
  9. /// </remarks>
  10. /// </summary>
  11. public class LoginViewModel
  12. {
  13. [StringLength(20, MinimumLength = 2, ErrorMessage = "{0}长度{2}-{1}个字符")]
  14. [Display(Name = "账号")]
  15. public string Account { get; set; }
  16.  
  17. [StringLength(20, MinimumLength = 4, ErrorMessage = "{0}长度{2}-{1}个字符")]
  18. [Display(Name = "密码")]
  19. public string Password { get; set; }
  20. }
  21. }

4、添加管理员控制器

在config的Controller文件夹上点右键创建控制器【MVC5控制器-空】,名称输入【AdministratorController】,在控制器

添加一个【Login】action,和一个HttpPost方式的【Login】action。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using Ninesky.User;
  7. using Ninesky.Data.Security;
  8.  
  9. namespace Ninesky.Website.Areas.Config.Controllers
  10. {
  11. /// <summary>
  12. /// 管理员控制器
  13. /// <remarks>
  14. /// 创建:2014.12.13
  15. /// </remarks>
  16. /// </summary>
  17. public class AdministratorController : Controller
  18. {
  19. private AdministratorService _adminService = new AdministratorService(ContextFactory.GetCurrentContext());
  20. // 登陆
  21. public ActionResult Login()
  22. {
  23. return View();
  24. }
  25.  
  26. [ValidateAntiForgeryToken()]
  27. [HttpPost]
  28. public ActionResult Login(Models.LoginViewModel loginVM)
  29. {
  30. if (ModelState.IsValid)
  31. {
  32. var _admin = _adminService.Find(a => a.Account == loginVM.Account);
  33. if (_admin == null) ModelState.AddModelError("Account", "账号不存在");
  34. else if (Encryption.Sha256(loginVM.Password) != _admin.Password) ModelState.AddModelError("Password", "密码不正确");
  35. else
  36. {
  37. _admin.LoginTime = System.DateTime.Now;
  38. _admin.LoginIp = Request.UserHostAddress;
  39. _adminService.Update(_admin);
  40. Session.Add("Account", loginVM.Account);
  41. Session.Add("Password", _admin.Password);
  42. return RedirectToAction("Index", "Home");
  43. }
  44. }
  45. return View(loginVM);
  46. }
  47. }
  48. }

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、管理员登陆的更多相关文章

  1. MVC5 网站开发实践 2.2、管理员身份验证

    上次完成了管理员的登录,这次要解决对管理员登录后的验证,采用AuthorizeAttribute属性的方式.之前还要解决几个问题,然后才重写验证类,最后稍微改一下界面. 目录 MVC5 网站开发实践  ...

  2. MVC5 网站开发实践 概述

    目录 MVC5 网站开发实践  概述 MVC5 网站开发实践  1.建立项目 MVC5 网站开发实践  2.后台管理 MVC5 网站开发实践  2.1.管理员登陆 MVC5 网站开发实践 2.2.管理 ...

  3. MVC5 网站开发实践 2、后台管理

    目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1.建立项目   从这一部分开始做后台管理,首先是基本框架的 一.Data项目 1.项目添加EntityFramework引用 在Data项 ...

  4. MVC5 网站开发实践 1、建立项目

    目录 MVC5 网站开发实践 概述   一.建立项目 1.建立团队项目 在办公室和家里使用不同的电脑,为了方便代码的共享将项目建立为团队项目.   如图打开vs2013→新建→团队项目(图1),会自动 ...

  5. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  6. ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询

    上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

    上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.   目录: ASP.N ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表

    显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据   目录 ASP.N ...

随机推荐

  1. 双向链表、双向循环链表的JS实现

    关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法:  单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...

  2. BZOJ 2048 题解

    2048: [2009国家集训队]书堆 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1076  Solved: 499[Submit][Status ...

  3. yoman 创建generator

    yoman作为一个模板工具,能够创建自己的模板,下面具体介绍下. 首先 安装一个模板工具(npm install -g generator-generator),此工具会自动创建一些必要的文件.安装完 ...

  4. 基于shell脚本比较数字大小

    让用户输入两个数来比较他们的大小 先用touch命令新建一个1.sh文件 在用vi进入i进入编辑状态 输入 #!/bin/bash read "" a read "&qu ...

  5. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  6. 印象笔记 剪藏(Evernote WebClipper) bug 记录

    问题记录: Chrome版的 webclipper不知为何新装的时候切换到中国版印象笔记登陆的时候闪退,然后之后就无法进入中国区的登录页面:international版确认可以登录. cookies是 ...

  7. 在线Spirte图定位工具,自动生成CSS

    发现一个在线雪碧图中的图片地位的工具,并且能够自动生成css.spritecow 废话不多说,有图有真相:

  8. gkENGINE重开!

    2013年中,曾信誓旦旦的要开源gkENGINE,结果一直到了现在. 拖了一年多,问题在于 - 工作太忙... 其实在2014春节假期我还是赶了赶进度,对gles2的渲染器进行了完善,但没做完.然后留 ...

  9. 最小生成树 prime zoj1586

    题意:在n个星球,每2个星球之间的联通需要依靠一个网络适配器,每个星球喜欢的网络适配器的价钱不同,先给你一个n,然后n个数,代表第i个星球喜爱的网络适配器的价钱,然后给出一个矩阵M[i][j]代表第i ...

  10. <十五>JDBC_使用 DBUtils 进行更新、查询操作

    详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...