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 ...
随机推荐
- 双向链表、双向循环链表的JS实现
关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法: 单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...
- BZOJ 2048 题解
2048: [2009国家集训队]书堆 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1076 Solved: 499[Submit][Status ...
- yoman 创建generator
yoman作为一个模板工具,能够创建自己的模板,下面具体介绍下. 首先 安装一个模板工具(npm install -g generator-generator),此工具会自动创建一些必要的文件.安装完 ...
- 基于shell脚本比较数字大小
让用户输入两个数来比较他们的大小 先用touch命令新建一个1.sh文件 在用vi进入i进入编辑状态 输入 #!/bin/bash read "" a read "&qu ...
- springmvc上传文件,抄别人的
SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...
- 印象笔记 剪藏(Evernote WebClipper) bug 记录
问题记录: Chrome版的 webclipper不知为何新装的时候切换到中国版印象笔记登陆的时候闪退,然后之后就无法进入中国区的登录页面:international版确认可以登录. cookies是 ...
- 在线Spirte图定位工具,自动生成CSS
发现一个在线雪碧图中的图片地位的工具,并且能够自动生成css.spritecow 废话不多说,有图有真相:
- gkENGINE重开!
2013年中,曾信誓旦旦的要开源gkENGINE,结果一直到了现在. 拖了一年多,问题在于 - 工作太忙... 其实在2014春节假期我还是赶了赶进度,对gles2的渲染器进行了完善,但没做完.然后留 ...
- 最小生成树 prime zoj1586
题意:在n个星球,每2个星球之间的联通需要依靠一个网络适配器,每个星球喜欢的网络适配器的价钱不同,先给你一个n,然后n个数,代表第i个星球喜爱的网络适配器的价钱,然后给出一个矩阵M[i][j]代表第i ...
- <十五>JDBC_使用 DBUtils 进行更新、查询操作
详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...