目录

MVC5 网站开发实践  概述

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

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

 

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

  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. [JSOI2008]完美的对称 题解

    题目大意: 首先我们给定一点A以及对称中心S,点A'是点A以S为对称中心形成的像点,即点S是线段AA'的对称中心. 点阵组(X)以S为中心的像点是由每个点的像点组成的点阵组.X是用来产生对称中心S的, ...

  2. Python列表和元组

    Python是没有数组的概念,但是和数组比较相近的概念是列表和元素. 下面两个例子展示列表和元组. # coding=utf-8 # 元组 students = ('小明', '小黄', '小李', ...

  3. content相关属性

    content属性值 :      width:可视区域的宽度,值可为数字或关键词device-width      height:同width      intial-scale:页面首次被显示是可 ...

  4. Web前端性能测试-性能测试知多少---深入分析前端站点的性能

    针对目前接手的web前端的性能,一时间不知道从什么地方入手,然后经过查找资料,发现其实还是蛮简单的. 前端性能测试对象: HTML.CSS.JS.AJAX等前端技术开发的Web页面 影响用户浏览网页速 ...

  5. STM32之待机唤醒

    前段时间我稍微涉及节能减排大赛..倡导节能的社会..没错了.你真是太聪明了..知道了我今天要讲关于STM32节能方面的模块..没错..这标题已经告诉你了是吧..哦,对,标题有写..所以..言归正传.至 ...

  6. ThreadPoolExecutor源码学习(2)-- 在thrift中的应用

    thrift作为一个从底到上除去业务逻辑代码,可以生成多种语言客户端以及服务器代码,涵盖了网络,IO,进程,线程管理的框架,着实庞大,不过它层次清晰,4层每层解决不同的问题,可以按需取用,相当方便. ...

  7. 【转】零基础学习Fiddler抓包改包

    看到一篇讲关于Fiddler抓包工具的讲解,个人感觉写得很仔细,但是作者说禁止转载,那就放个链接Mark一下 http://tmq.qq.com/2016/12/fiddler_packet_capt ...

  8. 解决bootstrap模态框内输入框无法获取焦点

    bootstrap 模态框中的input标签在某些情况下会无法获取焦点. 最终解决方法:去除模态框的 tabindex="-1" 属性即可

  9. 内存不足时,调用ajax报的错

    在error中遍历出来的异常   很难见

  10. java基本类型的默认值及其取值范围