.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实战教程