/// <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(); }
/// <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); }