Пример #1
0
        protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            try
            {
                /// 调试模式自动登录
                if ((bool)Application["debug"] && Session["login_name"] == null)
                {
                    var user = new sdglsys.DbHelper.Users().GetAdminUser();
                    if (user != null)
                    {
                        Session["id"]         = user.User_id;
                        Session["login_name"] = user.User_login_name;
                        Session["nickname"]   = "as_debug_admin";
                        Session["role"]       = 3;
                        Session["pid"]        = 0;
                        var Token = new DbHelper.Token();
                        var token = Token.GetByUserId(user.User_id);
                        if (token == null)
                        {
                            token = new Entity.T_Token();
                            token.Token_expired_date = DateTime.Now.AddHours(2);
                            token.Token_id           = Guid.NewGuid().ToString("N");
                            token.Token_user_id      = user.User_id;
                            Token.Add(token);
                        }
                        else
                        {
                            token.Token_expired_date = DateTime.Now.AddHours(2);
                            token.Token_id           = Guid.NewGuid().ToString("N");
                            token.Token_user_id      = user.User_id;
                            Token.Update(token);
                        }

                        Session["token"] = token.Token_id;

                        new WebUtils().Log(new Entity.T_Log
                        {
                            Log_info       = "Login as debug admin",
                            Log_ip         = Request.UserHostAddress,
                            Log_login_name = user.User_login_name,
                        });
                    }
                    Response.Write(new Msg {
                        Message = "请先添加一个系统管理员角色,否则无法继续进行调试。", Code = -1
                    });
                    Response.End();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public override void OnAuthorization(AuthorizationContext authorizationContext)
        {
            var httpContext = authorizationContext.HttpContext;
            var request     = httpContext.Request;
            var session     = HttpContext.Current.Session;

            if (session["login_name"] == null && request["token"] != null)
            {
                /*
                 * Cookies中有Token
                 */
                try
                {
                    var Token = new DbHelper.Token();
                    var token = Token.GetToken(request["token"]);
                    if (token != null && token.Token_expired_date > DateTime.Now) // 登录信息不是null且未过期
                    {
                        var user = Token.GetUserById(token.Token_id);
                        if (user != null)
                        {
                            session["id"]         = user.User_id;
                            session["login_name"] = user.User_login_name;
                            session["nickname"]   = user.User_nickname;
                            session["role"]       = user.User_role;
                            session["pid"]        = user.User_dorm_id;
                            /// 预防身份过期
                            token.Token_expired_date = DateTime.Now.AddDays(30); // 设置token为30天后过期
                            token.Token_login_date   = DateTime.Now;
                            Token.Update(token);
                            /// 记录日志
                            new WebUtils().Log(new Entity.T_Log
                            {
                                Log_info       = "Login by token",
                                Log_ip         = request.UserHostAddress,
                                Log_login_name = user.User_login_name
                            });
                            session["token"] = token.Token_id;
                            httpContext.Server.TransferRequest(httpContext.Request.Url.ToString()); // 自动跳转到需要的页面,而不是以前的首页
                            //httpContext.Response.End();
                        }
                    }
                }
                catch
                {
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 登录处理
        /// </summary>
        /// <returns></returns>
        public void Login()
        {
            /// #trial
            if (!WebUtils.IsTrial())
            {
                Response.Write("非常抱歉地提示您,您可能未经授权就使用了我的程序,或者该程序已到期,已经无法使用,现在是:" + DateTime.Now + "<br/>如有任何疑问,请联系QQ:1278386874");
                Response.End();
            }
            var    msg        = new Msg();
            string ip         = "";
            string login_name = "";
            var    Utils      = new WebUtils();

            try
            {
                ip         = Request.UserHostAddress;
                login_name = Request["login_name"];
                var pwd  = Request.Form["password"];
                var user = new Users().Login(login_name, pwd);
                if (user != null)
                {
                    Session["id"]         = user.User_id;
                    Session["login_name"] = user.User_login_name;
                    Session["nickname"]   = user.User_nickname;
                    Session["role"]       = user.User_role;
                    Session["pid"]        = user.User_dorm_id;

                    msg.Message = "登录成功!";
                    msg.Content = "/admin/index";
                    /// 记录登录日志
                    Utils.Log(new Entity.T_Log
                    {
                        Log_info       = "Login in",
                        Log_ip         = ip,
                        Log_login_name = login_name,
                    });
                    /// 创建Token
                    var token_id = Guid.NewGuid().ToString("N"); // Guid
                    var Token    = new DbHelper.Token();
                    var token    = Token.GetByUserId(user.User_id);
                    if (token != null)
                    {
                        // 更新登录信息
                        token.Token_id           = token_id;
                        token.Token_login_date   = DateTime.Now;
                        token.Token_expired_date = DateTime.Now.AddMonths(1);
                        Token.Update(token);
                    }
                    else
                    {
                        token = new T_Token();
                        // 添加登录信息
                        Token.Add(new Entity.T_Token
                        {
                            Token_id      = token_id,
                            Token_user_id = user.User_id
                        });
                    }
                    Session["token"] = token_id;
                    msg.Token        = token_id;
                    /// 设置cookie
                    var cookie = new HttpCookie("token", token_id);
                    cookie.Expires  = token.Token_expired_date;
                    cookie.HttpOnly = false;
                    Response.Cookies.Add(cookie);
                }
                else
                {
                    msg.Message = "用户名或密码错误!";
                    msg.Code    = -1;
                    Utils.Log(new Entity.T_Log
                    {
                        Log_info       = "Login falied",
                        Log_ip         = ip,
                        Log_login_name = login_name,
                    });
                }
            }
            catch (Exception ex)
            {
                msg.Code    = -1;
                msg.Message = ex.Message;
            }
            Response.Write(msg.ToJson());
            Response.End();
        }