.net MVC中使用forms验证详解
发布时间 - 2026-01-11 01:15:32 点击率:次.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);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# .net
# MVC
# forms
# 验证
# .net core利用orm如何操作mysql数据库详解
# .net MVC使用IPrincipal进行Form登录即权限验证(3)
# ASP.NET MVC下Ajax.BeginForm方式无刷新提交表单实例
# .net WINFORM的GDI双缓冲的实现方法
# Asp.net webForm设置允许表单提交Html的方法
# Asp.net mvc验证用户登录之Forms实现详解
# asp.net mvc中Forms身份验证身份验证流程
# asp.net core标签助手的高级用法TagHelper+Form
# 深入理解Asp.Net中WebForm的生命周期
# .NET Orm性能测试分析
# 发布时间
# 这一
# 不需要
# 这样子
# 贴出
# 具体内容
# 大家多多
# 默认为
# 仅供参考
# AI
# type
# LoginController
# targetFramework
# ApplicationInsightsHttpModule
# httpModules
# ApplicationInsightsWebTracking
# add
# httpRuntime
# ApplicationInsights
# Microsoft
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
javascript读取文本节点方法小结
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel如何发送系统通知?(Notification渠道示例)
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Bootstrap CSS布局之列表
如何在VPS电脑上快速搭建网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何获取PHP WAP自助建站系统源码?
JS碰撞运动实现方法详解
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Swift中swift中的switch 语句
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
Linux安全能力提升路径_长期防护思维说明【指导】
高端云建站费用究竟需要多少预算?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
音响网站制作视频教程,隆霸音响官方网站?
如何在景安云服务器上绑定域名并配置虚拟主机?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
香港服务器WordPress建站指南:SEO优化与高效部署策略
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何用AWS免费套餐快速搭建高效网站?
Linux网络带宽限制_tc配置实践解析【教程】
进行网站优化必须要坚持的四大原则
微信小程序 require机制详解及实例代码
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
个人网站制作流程图片大全,个人网站如何注销?
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
黑客如何利用漏洞与弱口令入侵网站服务器?
在centOS 7安装mysql 5.7的详细教程
Laravel集合Collection怎么用_Laravel集合常用函数详解
zabbix利用python脚本发送报警邮件的方法
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
在Oracle关闭情况下如何修改spfile的参数
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
网易LOFTER官网链接 老福特网页版登录地址
EditPlus中的正则表达式实战(6)
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程

