zoukankan      html  css  js  c++  java
  • 登录必备

           private void LoadCookie()
            {
                var cookie = this.Request.Cookies["LoginName"];
                if (cookie == null || String.IsNullOrEmpty(cookie.Value))
                {
                    this.ckbSave.Checked = false;
                    return;
                }
                this.txtUsername.Value = cookie.Value;
                this.ckbSave.Checked = true;

            }


         protected void btnLogin_Click(object sender, EventArgs e)
              {
                string message;
                int userId = 0; 
                bool verify = UserHelper.Entry(this.txtUsername.Value.Trim(), this.txtPassword.Value.Trim(), out message, out userId);
                if (!verify)
                {
                    this.litError.Text = message;
                    return;
                }

                UserHelper.SetCookie(userId);
                this.Response.Redirect(redirecturl);
            }


           public static void SetCookie(int userId)
            {
                Guid token = Guid.NewGuid();
                HttpContext context = HttpContext.Current;
                //保存登录信息
                EntryLog log = EntryLogData.CreateOrUpdate(new EntryLog
                {
                    UserId = userId,
                    LoginIp = context.Request.UserHostAddress,
                    Token = token
                });
                //删除缓存
                caching.Remove(userId);
                //设置唯一标识
                HttpCookie cookie = new HttpCookie(COOKIE_Token, token.ToString());
                //cookie.Expires = DateTime.Now.Add(FormsAuthentication.Timeout);
                cookie.Path = FormsAuthentication.FormsCookiePath;
               // cookie.Domain = FormsAuthentication.CookieDomain;
                cookie.HttpOnly = true;
                context.Response.Cookies.Add(cookie);
                FormsAuthentication.SetAuthCookie(userId.ToString(), true);
            }

           <authentication mode="Forms">
           <forms loginUrl="/Login.aspx" timeout="20" name=".EasytourAppDev" defaultUrl="Default.aspx" protection="All" enableCrossAppRedirects="true" />
           </authentication>


          /// <summary>
            /// 用户注销
            /// </summary>
            public static void Logout()
            {
                HttpContext context = HttpContext.Current;
                //唯一标识
                HttpCookie tokenCookie = new HttpCookie(COOKIE_Token, "");
                tokenCookie.Expires = DateTime.Now.AddDays(-1);
                context.Response.Cookies.Add(tokenCookie);
                context.Response.Cookies.Remove(COOKIE_Token);
                //登录Cookie
                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, "");
                authCookie.Expires = DateTime.Now.AddYears(-1);
                context.Response.Cookies.Add(authCookie);
                //Asp.net
                HttpCookie aspNetCookie = new HttpCookie("ASP.NET_SessionId", "");
                aspNetCookie.Expires = DateTime.Now.AddYears(-1);
                context.Response.Cookies.Add(aspNetCookie);


                FormsAuthentication.SignOut();
                HttpContext.Current.Session.Abandon();
                context.Response.Redirect("Login.aspx");


            }


            #region 获取当前登录用户信息 
            /// <summary>
            /// 获取当前登录用户的ID
            /// </summary>
            /// <returns>当前登录用户的ID</returns>
            public static User CurrentUser(int userId = 0)
            {
                var identity = HttpContext.Current.User.Identity;
                if (!identity.IsAuthenticated)
                {
                    HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl);
                }
                if (userId == 0)
                {
                    userId = int.Parse(identity.Name);
                }
                User user = UserBusiness.GetUser(userId);


                if (user == null || user.Id != userId || !VerifyToken(userId))
                {
                    if (!HttpContext.Current.Response.IsRequestBeingRedirected)
                    {
                        HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl);
                    }


                }
                // throw new Exception("用户信息为空");


                return user;
            }


           /// <summary>
            /// 验证唯一标识
            /// </summary>
            /// <param name="userId"></param>
            /// <returns></returns>
            private static bool VerifyToken(int userId)
            {
                HttpCookie cookie = HttpContext.Current.Request.Cookies[COOKIE_Token];
                if (cookie == null)
                {
                    return false;
                }
                EntryLog log = caching.Get(userId);
                if (log == null)
                {
                    return false;
                }
                Guid token;
                if (!Guid.TryParse(cookie.Value, out token))
                {
                    return false;
                }
                if (token != log.Token)
                {
                    return false;
                }
                return true;
            }

  • 相关阅读:
    短信
    solr测试用的配置
    中文词启动
    配置域
    applicationContext-redis.xml
    Redis端口配置
    springDataRedis 依赖
    FastDFSClient上传图片工具类
    security 页面测试
    PHP图片压缩功能(按比例图片缩放)(转载)
  • 原文地址:https://www.cnblogs.com/wangyhua/p/4050599.html
Copyright © 2011-2022 走看看