zoukankan      html  css  js  c++  java
  • Asp.Net Forms 身份验证

    Web系统登录,身份认证,以及验证登录过期都是基本常用的,写了一个,就发出来吧。

    水平有限,代码写的烂,轻喷。

    1,新建Web项目,新建UserInfo类

        public class UserInfo
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Password { get; set; }
        }
    

    2,登录实现代码,代码很简单:

       protected void Button1_Click(object sender, EventArgs e)
            {
                string username = txtName.Text.Trim();
                string pass = txtPwd.Text.Trim();
    
                if (!string.IsNullOrEmpty(username))
                {
                    if (!string.IsNullOrEmpty(pass))
                    {
                        UserInfo user = UserLogon(username, pass);
                        if (user != null)
                        {
                            string userdata = string.Format("{0},{1},{2}", user.Id, user.Name, user.Password);
    
                            //Forms身份认证的标示
                            FormsAuthenticationTicket ticket =
                                new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddSeconds(40), true, userdata);
    
                            //加密
                            string encticket = FormsAuthentication.Encrypt(ticket);
    
                            //创建Cookie
                            HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encticket);
    
                            Response.Cookies.Add(cookie);
    
                            Response.Redirect("Index.aspx");
                        }
                    }
                }
            }
    
            private UserInfo UserLogon(string name, string pwd)
            {
                UserInfo user = null;
                if (name == "admin")
                {
                    user = new UserInfo { Id = 1, Name = "admin", Password = "123456" };
                }
    
                return user;
            }
    

    用户信息也可自行加密。

    3,获取当前用户信息:

     protected void Page_Load(object sender, EventArgs e)
            {
                UserInfo model = GetCookieUser();
    
                this.divuser.InnerHtml = model.Id + "<br />" + model.Name + "<br />" + model.Password;
            }
    
    
       private UserInfo GetCookieUser()
            {
                UserInfo user = new UserInfo();
                FormsIdentity identity = HttpContext.Current.User.Identity as FormsIdentity;
                FormsAuthenticationTicket ticket = identity.Ticket;
                
                string userdata = ticket.UserData; //获取自定义的 UserData 串
                if (!string.IsNullOrEmpty(userdata))
                {
                    string[] uinfo = userdata.Split(',');
                    user.Id = int.Parse(uinfo[0]);
                    user.Name = HttpContext.Current.User.Identity.Name;
                    user.Password = uinfo[2];
                }
    
                return user;
            }
    

     4,最后配置文件修改,配置文件相关节点属性,可自行查阅:

    <configuration>
      <system.web>
        <authentication mode="Forms">
          <!--认证-->
          <forms loginUrl="Login.aspx" defaultUrl="Index.aspx" name="TestAuth" path="/"
                 slidingExpiration="true" timeout="30" protection="All">
          </forms>
        </authentication>
        <authorization>
          <deny users="?"/>
        </authorization>
        <!--加密方式-->
        <machineKey decryption="Auto" validation="SHA1"/>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
      </system.web>
    </configuration>
    

    现在身份认证已经完成,不登录,不是admin都无法访问Index.aspx页面,会直接跳转到Login.aspx 登录页面。

    至此,简单的登录,认证,过期登出操作完成,在此只做简单说明,至于其他可自行扩展。

  • 相关阅读:
    appium+python自动化:获取元素属性get_attribute
    Appium定位
    Appium 服务器初始化参数(Capability)
    你会阅读appium官网文档吗
    Appium 服务命令行参数
    推荐一个pycharm验证xpath表达式的插件XPathView +​ XSLT
    今日总结
    今日总结
    今日总结
    动手动脑 继承
  • 原文地址:https://www.cnblogs.com/softmax/p/3639528.html
Copyright © 2011-2022 走看看