.NET 是 Microsoft XML web services 平台。你可以理解为.NET Framework ,XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。
这篇文章主要为大家详细介绍了.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);
- }
来源: http://www.phperz.com/article/17/0908/337834.html