Exemple #1
0
 /// <summary>
 /// 登录时对授权的校验,主要是提示授权即将到期,登录用户过多等。
 /// 其中对于授权到期的认证也会存在。
 /// </summary>
 /// <returns></returns>
 public bool LoginCheckLicence(out string msg)
 {
     //1、 验证授权文件无误
     if (licenceObj == null)
     {
         msg = "授权码丢失或授权文件解析失败。";
         return(false);
     }
     //2、 验证是否到期或者机器码不对,如果未到期,且机器正确,则往下执行
     msg = PageCheckLicence();
     if (msg != "true")
     {
         return(false);
     }
     //3、 验证用户数量是否一致?
     if (!licenceObj.AllUser)
     {
         if (OperatorProvider.GetAllOnlineUser() > licenceObj.UserNum)
         {
             msg = "当前登录用户过多";
             return(false);
         }
     }
     //4、 验证授权即将到期
     if (!licenceObj.AllData)
     {
         if (DateTime.Compare(DateTime.Now.AddDays(15), licenceObj.Date) > 0)
         {
             msg = "授权即将到期,到期时间:" + licenceObj.Date.ToString("yyyy-MM-dd");
             return(true);
         }
     }
     msg = "true";
     return(true);
 }
        /// <summary>
        /// 当前的界面的加载前执行的方法。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            //判断当前的session中没用用户登录信息,标示用户未登录,直接调转到登录界面。
            if (OperatorProvider.Provider.GetCurrent() == null)
            {
                Response.Write("<script>top.location.href='/WebMaster/Login/Login.aspx'</script>");
                Response.End();
                //Response.Redirect("/WebMaster/Login/Login.aspx"); //对于iframe的页面,不适合使用
            }

            //当前session在全局的session信息是否被强制下线验证,如果已经强制下线,则返回提示信息。
            if (OperatorProvider.CheckIsNoLogin())
            {
                Response.Redirect("/WebMaster/Offline/offline.htm?msg=您的帐号在其他地方已登录,请重新登录!");
            }

            //当用户登录没有问题后,对当前系统的授权情况进行验证,主要是对于机器码以及授权到期验证。
            string licenceMsg = Licence.Target.PageCheckLicence();

            if (licenceMsg != "true")
            {
                string url = "/WebMaster/Error/error.htm?msg=授权验证问题&detail=" + licenceMsg;
                Response.Redirect(WebHelper.UrlEncode(url));
            }

            //LoadHeader();
        }
Exemple #3
0
        /// <summary>
        /// 判断用户未登录或者登录被挤掉
        /// </summary>
        /// <param name="nowType">当前请求的处理类类型</param>
        /// <param name="action">当前亲你供求的方法</param>
        /// <param name="response">信息返回对象</param>
        /// <returns></returns>
        private bool CheckUserNoLogin(Type nowType, string action, HttpResponse response)
        {
            CheckLoginAttribute checkLoginAttr = (CheckLoginAttribute)Attribute.GetCustomAttribute(nowType, typeof(CheckLoginAttribute));

            //存在登录验证属性、且类标记为验证状态、且当前请求的方法不再屏蔽验证方法列表中时,进行验证。
            if (checkLoginAttr != null && checkLoginAttr.IsCheck && !checkLoginAttr.IgnoreFunction.Contains(action))
            {
                //判断当前的session中没用用户登录信息,标示用户未登录,直接调转到登录界面。
                if (OperatorProvider.Provider.GetCurrent() == null)
                {
                    RedirectResult(response, "/WebMaster/Login/Login.aspx");
                    return(true);
                }
                //当前session在全局的session信息是否被强制下线验证,如果已经强制下线,则返回提示信息。
                if (OperatorProvider.CheckIsNoLogin())
                {
                    OperatorProvider.Provider.RemoveCurrent();
                    RedirectResult(response, "/WebMaster/Offline/offline.htm?msg=您的帐号在其他地方已登录,请重新登录!");
                    return(true);
                }
            }
            return(false);
        }