asp.net 登录验证 mysql_Asp.net mvc验证用户登录之Forms实现详解
这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样。
第一步:创建asp.net mvc项目, 在项目的App_Start文件夹下面有一个FilterConfig.cs,在这个文件中可以注册全局的过滤器。我们在文件中添加AuthorizeAttribute过滤器如下:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
//将内置的权限过滤器添加到全局过滤中
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
}
}
第二步:在web.config配置文件中修改网站的身份认证为mode="Forms"
提示:配置name值作为最终生成的cookie的名称,loginUrl指定当用户未登入是跳转的页面,这里挑战到登入页面
第三步:添加用户登入相关的控制器和视图
创建LoginController控制器:
public class LoginController : Controller
{
[HttpGet]
[AllowAnonymous]
public ActionResult Index()
{
return View();
}
[HttpPost]
[AllowAnonymous]
public ActionResult Login(User user)
{
if (!user.Username.Trim().Equals("liuxin") || !user.Password.Trim().Equals("abc"))
{
ModelState.AddModelError("", "用户名或密码错误");
return View("index", user);
}
//if (!user.Username.Trim().Equals("liuxin")) {
// ModelState.AddModelError("Username", "用户名错误");
// return View("index", user);
//}
//if (!user.Password.Trim().Equals("abc")) {
// ModelState.AddModelError("Password", "密码错误");
// return View("index", user);
//}
user.Id = Guid.NewGuid().ToString("D");//为了测试手动设置一个用户id
FormsAuthHelp.AddFormsAuthCookie(user.Id, user, 60);//设置ticket票据的名称为用户的id,设置有效时间为60分钟
return Redirect("~");
}
[HttpGet]
public ActionResult Logout() {
FormsAuthHelp.RemoveFormsAuthCookie();
return Redirect("~/Login/Index");
}
}
特别注意:Index和Login这两个方法得使用“[AllowAnonymous]”指明这两个方法可以匿名访问,否则由于过滤器不允许匿名访问,导致登入页面和用户提交都无法进行。显然这不是我们希望看到的。
提示:为了测试方便这边的用户的数据是写死的,用户的id也是临时生成了一个
public class User
{
public string Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
创建登入视图:
@{
Layout = null;
ViewBag.Title = "Index";
}
您尚未登入,请登入
@using(Html.BeginForm("Login", "Login", FormMethod.Post))
{
@Html.Label("Username", "用户名:")@Html.TextBox("Username", null, new { id = "Username", placeholder = "请输入用户名" })
@Html.ValidationMessage("Username")
@Html.Label("Password", "密 码:")@Html.TextBox("Password", null, new { id = "Password", placeholder = "请输入密码" })
@Html.ValidationMessage("Password")
@Html.ValidationSummary(true)
}
提示:当检测到用户未登入,则跳转到web.config中配置的url页面,当用户填写密码并提交时,用户输入的数据会提交到LoginController控制器下的Login方法,验证用户的输入,认证失败重新返回到登入界面,当认证成功,将会执行
<>,这条语句的作用是生成一个ticket票据,并封装到cookie中,asp.net mvc正式通过检测这个cookie认证用户是否登入的,具体代码如下
第四步:将用户信息生成ticket封装到cookie中
public class FormsAuthHelp
{
///
/// 将当前登入用户的信息生成ticket添加到到cookie中(用于登入)
///
/// Forms身份验证票相关联的用户名(一般是当前用户的id,作为ticket的名称使用)
/// 用户信息
/// 有效期
public static void AddFormsAuthCookie(string loginName, object userData, int expireMin)
{
//将当前登入的用户信息序列化
var data = JsonConvert.SerializeObject(userData);
//创建一个FormsAuthenticationTicket,它包含登录名以及额外的用户数据。
var ticket = new FormsAuthenticationTicket(1,
loginName, DateTime.Now, DateTime.Now.AddDays(1), true, data);
//加密Ticket,变成一个加密的字符串。
var cookieValue = FormsAuthentication.Encrypt(ticket);
//根据加密结果创建登录Cookie
//FormsAuthentication.FormsCookieName是配置文件中指定的cookie名称,默认是".ASPXAUTH"
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieValue)
{
HttpOnly = true,
Secure = FormsAuthentication.RequireSSL,
Domain = FormsAuthentication.CookieDomain,
Path = FormsAuthentication.FormsCookiePath
};
//设置有效时间
if (expireMin > 0)
cookie.Expires = DateTime.Now.AddMinutes(expireMin);
var context = HttpContext.Current;
if (context == null)
throw new InvalidOperationException();
//写登录Cookie
context.Response.Cookies.Remove(cookie.Name);
context.Response.Cookies.Add(cookie);
}
///
/// 删除用户ticket票据
///
public static void RemoveFormsAuthCookie() {
FormsAuthentication.SignOut();
}
}
第五步:测试执行
1. 启动网站输入相应的网址:如下图
2. 此时用户尚未登入将会跳转到登入界面:如下图
3.输入错误的密码会重新跳转到登入界面并提示出错
4. 输入正确的用户名密码
5.点击用户退出会删除掉cookie所以又会跳转到登入界面。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
asp.net 登录验证 mysql_Asp.net mvc验证用户登录之Forms实现详解相关推荐
- html用户登录页面设计,简洁时尚的用户登录界面设计效果
这是一款简洁时尚的用户登录界面设计效果.该用户登录效果使用CSS和JS来完成,它使用元素滑动效果来制作登录表单动画,字体效果时尚大方,是非常不错的用户登录界面UI设计效果. 使用方法 HTML结构 该 ...
- html登录验证功能,续:实现用户登录验证功能
一.提纲 1.Previously前情提要 已经把Thymeleaf部署到项目中: 把前端开发的静态资源成功引入到项目中: 完成登录验证功能,登录成功跳转到success.html页面,登录失败跳转到 ...
- Spring MVC定制用户登录注销实现示例
这篇文章描述了如何实现对Spring MVC Web应用程序的自定义用户访问(登录注销). 作为前提,建议读者阅读这篇文章 ,其中介绍了一些Spring Security概念. 该代码示例可从Spri ...
- centos 7 如何验证oracle安装成功_linux下Oracle数据的安装详解
第二章:CentOS下Oracle用户环境配置和Oracle11g的安装: 1.下载Oracle安装包: linux.x64_11gR2_database_1of2.zip 和 linux.x64_1 ...
- 基于Servlet的MVC模式用户登录实例
关于MVC模式的简单解释 M Model,模型层,例如登录实例中,用于处理登录操作的类: V View,视图层,用于展示以及与用户交互.使用html.js.css.jsp.jQuery等前端技术实现: ...
- JVM类加载、验证、准备、解析、初始化、卸载过程详解
目录 0 使用类的准备工作 初始化(Init) 1 加载(Load) 1.1 详细过程 1.1.1 通过类全限定名获取该类的二进制字节流 1.1.2 静态存储结构=>运行时数据结构 1.1.3 ...
- java 登录拦截器_springMVC 拦截器-用户登录拦截实战
各位小伙伴 咱们继续学习新知识 今天要分享的就是 拦截器 不知道小伙伴们平时上网的时候有没有注意到,尤其是上网购物的时候,不登录账号,就无法访问一些功能页面,比如你不登录账号,就没法查看购物车里面有什 ...
- php mysql ajax登录界面_PHP+jQuery+Ajax实现用户登录与退出
本文使用Ajax无刷新登录和退出,从而提升了用户体验. 若用户为登录状态,则显示用户相关登录信息,否则显示登录表单. 用户登录与退出功能应用在很多地方,而在有些项目中,我们需要使用Ajax方式进行登录 ...
- html退出登录_[实战小剧场servletamp;jsp] 用户登录及退出功能实现
项目使用技术:servlet+jsp+mybatis 用户登录: 根据用户名和密码查询用户信息.查到则登录成功,查不到则登录失败. 用户退出: 销毁session 登录思路: 浏览器在登录页面发起登录 ...
最新文章
- 华为为什么要“囤”700名数学家?中科院院士告诉你!
- 【星球知识卡片】图像生成都有哪些核心技术,如何对其进行长期深入学习
- SAP SD信用控制管理
- 【网易中台实践】云信业务中台的敏捷开发
- navicat使用查询向表中插入一行记录_SQL--每日一解------Bulk Insert 快速插入
- HTML5开发都能干什么?从事哪些岗位?
- android log system
- 关于DruidStatView监控信息
- 第 3 章 查询截取分析
- 5.2 2.5-Dimensional Impostors for realistic trees and forests笔记
- MVC保存二进制到数据库,并显示文件的方法(图片显示)
- YYKit 源码学习使用 1
- delphi 发送html邮件,delphi – 以HTML格式发送电子邮件
- window终端光标消失
- CERT_HAS_EXPIRED
- Matlab论文插图绘制模板第60期—瀑布图(Waterfall)
- 指标公式c语言源码下载,【通达信】九全指标-指标公式源码
- margin:0 auto是什么意思
- BI PUBLISHER RTF模板制作PIVOT表和重分组
- 安全标准ISO7498-2(Security Architecture)名词定义