.net MVC中使用forms验证详解
时间:2019-03-30
本文章向大家介绍.net MVC中使用forms验证详解,主要包括.net MVC中使用forms验证详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
.net MVC中使用forms验证,供大家参考,具体内容如下
文件夹的分部是这样子的
首先在Web.config中设置
authentication和authorization 节点
<system.web> <authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="2880" defaultUrl="~/Home/Index"/> </authentication> <anonymousIdentification enabled="true"/> <authorization> <deny users="?"/> <!--拒绝匿名访问--> </authorization> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <httpModules> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> </httpModules> </system.web>
如果在Login文件夹还有不需要匿名访问,或者在LoginController中除了登陆还有方法可以匿名访问,
那么我们需要在加上这一个节点
<location path="Login"> <!--这里的意思就是LoginController下的方法可以匿名访问--> <system.web> <authorization> <allow users="*" /> <!--允许匿名访问--> </authorization> </system.web> </location>
登陆的方法贴出一部分代码,仅供参考
public bool ValidateUser(LoginVO model) { string encodePassword = MD5(model.PassWord);//加密 string sql = "select * from User_Users where (UserName=@UserName or JobNumber=@JobNumber) and PassWord=@PassWord"; var user = Context.Data.Query<UsersPO>(sql, new {UserName = model.LoginName, JobNumber = model.LoginName, PassWord = encodePassword}).SingleOrDefault(); if (user == null) return false; DateTime expiration = model.IsRememberLogin //是否记住密码 ? DateTime.Now.AddDays(14) : DateTime.Now.Add(FormsAuthentication.Timeout); var ticket=new FormsAuthenticationTicket( 1,//指定版本号:可随意指定 user.UserName,//登录用户名:对应 Web.config 中 <allow users="Admin" … /> 的 users 属性 DateTime.Now, //发布时间 expiration,//失效时间 true,//是否为持久 Cookie user.UserId.ToString(), //用户数据:可用 ((System.Web.Security.FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData 获取 FormsAuthentication.FormsCookiePath //指定 Cookie 为 Web.config 中 <forms path="/" … /> path 属性,不指定则默认为“/” ); var encryptedTicket = FormsAuthentication.Encrypt(ticket); if (HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName] != null) { HttpContext.Current.Request.Cookies.Remove(FormsAuthentication.FormsCookieName); } var loginIdentify=new HttpCookie(FormsAuthentication.FormsCookieName); if (model.IsRememberLogin) { loginIdentify.Expires = DateTime.Now.AddDays(7); } loginIdentify.Value = encryptedTicket; HttpContext.Current.Response.AppendCookie(loginIdentify);//添加Cookie return true; } /// <summary> /// 加密 /// </summary> /// <param name="str"></param> /// <param name="encoding"></param> /// <param name="toUpper"></param> /// <param name="isReverse"></param> /// <param name="count"></param> /// <returns></returns> private string MD5(string str, Encoding encoding=null, int count = 1) { if (encoding == null) { encoding = Encoding.Default; } var bytes = new MD5CryptoServiceProvider().ComputeHash(encoding.GetBytes(str)); var md5 = string.Empty; for (int i = 0; i < bytes.Length; i++) { md5 += bytes[i].ToString("x").PadLeft(2, '0'); } if (count <= 1) { return md5; } return MD5(md5, encoding, --count); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Spark Sql系统入门4:spark应用程序中使用spark sql
- Flume+Kafka收集Docker容器内分布式日志应用实践
- CentOS7搭建ELK日志集中分析平台
- Centos安装sshfs实现挂载目录
- shell脚本监控磁盘使用率
- Python使用MD5加密字符串
- Spark MLlib之 KMeans聚类算法详解
- Python时间与时间戳转换
- linux配置ssh互信实现免密登陆
- uva--1339 - Ancient Cipher(模拟水体系列)
- Python获得13位unix时间戳
- Centos7下LVM对文件系统进行在线扩容
- centos7编译安装Redis
- hdu----(5023)A Corrupt Mayor's Performance Art(线段树区间更新以及区间查询)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- envoy filter 开发实践系列 2:官网 http filter 示例编译测试
- 快速入门ElasticSearch
- 如何用 JS 一次获取 HTML 表单的所有字段 ?
- Docker与容器
- Go 每日一库之 air
- Go 每日一库之 goquery
- 个人电脑也做做宏基因组玩玩
- windows 安装 miniconda3 +jupyter lab ,使用系统R语言
- Mysql获取数据的总行数count(*)很慢
- 并发编程问题为什么都很诡异
- 6轮Jmeter压测对比keep-alive的影响
- 多个你不知道的 CSS 居中方案!
- 深入理解Pod(二)
- JavaScript 中 10 个需要掌握基础的问题
- 深入理解Pod(三)