示例#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);
        }
示例#2
0
 //logout user
 public static void LogoutUser(SSOHttpRequestParams par, string CookieName, HttpApplication app)
 {
     //This is a logout request. So, remove the authentication Cookie from the response
     if (par.Token != null)
     {
         if (app != null)
         {
             SSOHTTPRequestService.RemoveCookie(CookieName, app.Response);
         }
         SSOUserLoginInfors Us;
         UsersLoggedIn.TryRemove(par.Token, out Us);
     }
 }
        public static HttpResponseMessage CreateResponseMessage(object data, HttpStatusCode code)
        {
            HttpResponseMessage result = null;

            //MultipartFormDataContent ct = SSOHTTPRequestService.prepareData(data);
            StreamContent ct = SSOHTTPRequestService.prepareData(data);

            result         = new HttpResponseMessage(code);
            result.Content = ct;
            result.Content.Headers.ContentType =
                new MediaTypeHeaderValue("application/octet-stream");
            result.Content.Headers.ContentDisposition          = new ContentDispositionHeaderValue("attachment");
            result.Content.Headers.ContentDisposition.FileName = "SSO.MPLIS";

            return(result);
        }
示例#4
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);
            }
        }
示例#5
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);
            }
        }