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