Exemple #1
0
        //Kiểm tra request đã được xác thực chưa
        //false: request is not authenticated
        //true: request is authenticated
        //Xóa thông tin user đăng nhập nếu cần
        public static bool CheckRequestAuthentication(string Token, out SSOUserLoginInfors Us)
        {
            Us = null;
            SSOLoginMessage Tm;

            if (Token != null && !Token.Equals(""))
            {
                if (UsersLoggedIn.TryGetValue(Token, out Us))
                {
                    //xử lý khi cookie quá hạn
                    if (SSOHTTPRequestService.CheckExpired(Us.UserCookie))
                    {
                        if (UsersLoggedIn.TryRemove(Token, out Us))
                        {
                            Tm         = new SSOLoginMessage();
                            Tm.Token   = Token;
                            Tm.User    = Us.User.TENDANGNHAP;
                            Tm.Message = "Phiên làm việc đã kết thúc, vui lòng đăng nhập lại";
                            Tm.Expires = DateTime.Now.AddMinutes(Config.AUTH_COOKIE_TIMEOUT_IN_MINUTES);
                            TokenMessage.AddOrUpdate(Token, Tm,
                                                     (key, existingVal) =>
                            {
                                existingVal = Tm;
                                return(existingVal);
                            });
                        }
                        UserToken.TryRemove(Us.User.TENDANGNHAP, out Token);
                        return(false);
                    }

                    //xử lý khi token quá hạn
                    if (SSOHTTPRequestService.CheckExpired(Us))
                    {
                        if (UsersLoggedIn.TryRemove(Token, out Us))
                        {
                            Tm         = new SSOLoginMessage();
                            Tm.Token   = Token;
                            Tm.User    = Us.User.TENDANGNHAP;
                            Tm.Message = "Token hết hạn, vui lòng đăng nhập lại";
                            Tm.Expires = DateTime.Now.AddMinutes(Config.AUTH_COOKIE_TIMEOUT_IN_MINUTES);
                            TokenMessage.AddOrUpdate(Token, Tm,
                                                     (key, existingVal) =>
                            {
                                existingVal = Tm;
                                return(existingVal);
                            });
                        }
                        UserToken.TryRemove(Us.User.TENDANGNHAP, out Token);
                        return(false);
                    }

                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
        private static void CheckAndReleaseData(SSOUserLoginInfors Us)
        {
            Us = null;
            SSOLoginMessage Tm;
            string          Token = "";

            //xử lý khi cookie quá hạn
            if (SSOHTTPRequestService.CheckExpired(Us.UserCookie))
            {
                if (UsersLoggedIn.TryRemove(Us.Token, out Us))
                {
                    Tm         = new SSOLoginMessage();
                    Tm.Token   = Us.Token;
                    Tm.User    = Us.User.TENDANGNHAP;
                    Tm.Message = "Phiên làm việc đã kết thúc, vui lòng đăng nhập lại";
                    Tm.Expires = DateTime.Now.AddMinutes(Config.AUTH_COOKIE_TIMEOUT_IN_MINUTES);
                    TokenMessage.AddOrUpdate(Us.Token, Tm,
                                             (key, existingVal) =>
                    {
                        existingVal = Tm;
                        return(existingVal);
                    });
                }
                UserToken.TryRemove(Us.User.TENDANGNHAP, out Token);
            }

            //xử lý khi token quá hạn
            if (SSOHTTPRequestService.CheckExpired(Us))
            {
                if (UsersLoggedIn.TryRemove(Us.Token, out Us))
                {
                    Tm         = new SSOLoginMessage();
                    Tm.Token   = Us.Token;
                    Tm.User    = Us.User.TENDANGNHAP;
                    Tm.Message = "Token hết hạn, vui lòng đăng nhập lại";
                    Tm.Expires = DateTime.Now.AddMinutes(Config.AUTH_COOKIE_TIMEOUT_IN_MINUTES);
                    TokenMessage.AddOrUpdate(Us.Token, Tm,
                                             (key, existingVal) =>
                    {
                        existingVal = Tm;
                        return(existingVal);
                    });
                }
                UserToken.TryRemove(Us.User.TENDANGNHAP, out Token);
            }
        }
Exemple #3
0
        //hàm dọn dẹp dữ liệu quá hạn trên SSO server
        public static void checkAndReleaseUserInfo()
        {
            SSOLoginMessage tm;

            while (true)
            {
                try
                {
                    foreach (var it in UsersLoggedIn)
                    {
                        CheckAndReleaseData(it.Value);
                    }
                }
                catch (Exception ex)
                {
                    //do nothing with error
                }

                try
                {
                    foreach (var it in TokenMessage)
                    {
                        if (SSOHTTPRequestService.CheckExpired(it.Value.Expires))
                        {
                            TokenMessage.TryRemove(it.Key, out tm);
                        }
                    }
                }
                catch (Exception ex)
                {
                }

                //mỗi giờ chạy một lần
                Thread.Sleep(3600000);
            }
        }