MVC5 网站开发实践 2.1、管理员登陆

2023-11-20 12:50

本文主要是介绍MVC5 网站开发实践 2.1、管理员登陆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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上点右键添加视图。

image

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

image

6、启用迁移。

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

image

然后打开Website项目Migrations文件夹下的“Configuration.cs”,将构造函数中的“AutomaticMigrationsEnabled = false;”改为“AutomaticMigrationsEnabled = true;”

7、创建数据库

再次在程序包管理控制台输入“Update-Database”命令来创建数据库。然后在服务器资源管理器中查看刚创建

8、添加一个管理员账号

数据库的管理员表的数据。然后在表中添加一个管理员,账号”admin”,密码”jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg=“ 如图

image

9、测试登录。

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

image

 

============================

代码:http://pan.baidu.com/s/1mgtBbxI

这篇关于MVC5 网站开发实践 2.1、管理员登陆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/394716

相关文章

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类