//[EnableCors(origins: "*", headers: "*", methods: "*")] public HttpResponseMessage UpdateCookie() { SSOReturnResult ret = new SSOReturnResult(); SSOUserStatus us = new SSOUserStatus(); string req = SSOHTTPRequestService.getDataInRequest(Request); SSOCookieInfor ci = SSOHTTPRequestService.getDataFromString <SSOCookieInfor>(req); SSOUserLoginInfors oldValue = null; if (ci != null && ci.Token != null && UserManagerService.CheckRequestAuthentication(ci.Token, out oldValue)) { oldValue.UserCookie.Expires = ci.Expires; UserManagerService.UsersLoggedIn.AddOrUpdate(ci.Token, oldValue, (key, existingVal) => { existingVal.UserCookie.Expires = oldValue.UserCookie.Expires; return(existingVal); }); ret.ReturnCode = HttpStatusCode.OK; ret.Message = "Cập nhật thành công"; } else { ret.ReturnCode = HttpStatusCode.BadRequest; ret.Message = "Dữ liệu cập nhật không hợp lệ"; } return(SSOHTTPRequestService.CreateResponseMessage(ret, HttpStatusCode.OK)); }
//[EnableCors(origins: "*", headers: "*", methods: "*")] public HttpResponseMessage getUserStatus() { SSOUserStatus us = new SSOUserStatus(); SSOUserLoginInfors Us = null; string req = SSOHTTPRequestService.getDataInRequest(Request); string dt = SSOHTTPRequestService.getDataFromString <string>(req); us.UserLoggedIn = UserManagerService.CheckRequestAuthentication(dt, out Us); return(SSOHTTPRequestService.CreateResponseMessage(us, HttpStatusCode.OK)); }
//[EnableCors(origins: "*", headers: "*", methods: "*")] public HttpResponseMessage LogoutUser(string Token) { SSOUserLoginInfors Us = null; if (UserManagerService.CheckRequestAuthentication(Token, out Us)) { var context = new HttpContextWrapper(HttpContext.Current); HttpRequestBase request = context.Request; SSOHttpRequestParams par = SSOHTTPRequestService.GetRequestParams(request); //var app = HttpContext.Current.ApplicationInstance as HttpApplication; UserManagerService.LogoutUser(par, SSOConstants.Cookie.AUTH_COOKIE, null); } SSOReturnResult ret = new SSOReturnResult(); ret.ReturnCode = HttpStatusCode.OK; ret.Message = "Logout thành công"; return(SSOHTTPRequestService.CreateResponseMessage(ret, HttpStatusCode.OK)); }
//Cập nhật thông tin người dùng public HttpResponseMessage UpdateUser() { string message = ""; bool isSuccess = false; string req = SSOHTTPRequestService.getDataInRequest(Request); SSOHtNguoiDung us = SSOHTTPRequestService.getDataFromString <SSOHtNguoiDung>(req); if (us != null) { isSuccess = UserManagerService.UpdateUser(us, out message); } if (isSuccess) { return(SSOHTTPRequestService.CreateResponseMessage(message, HttpStatusCode.OK)); } else { return(SSOHTTPRequestService.CreateResponseMessage(message, HttpStatusCode.InternalServerError)); } }
// GET: Authenticate public ActionResult Login() { SSOLoginMessage tm = null; SSOUserLoginInfors ui = null; string tk = null; var par = SSOHTTPRequestService.GetRequestParams(Request); ViewBag.ReturnUrl = par == null ? "" : (par.ReturnUrl == null ? "" : par.ReturnUrl); if (par != null && par.Token != null && !par.Token.Equals("")) { if (UserManagerService.TokenMessage.TryRemove(par.Token, out tm)) { ViewBag.TB = tm.Message; } if (UserManagerService.UsersLoggedIn.TryRemove(par.Token, out ui)) { UserManagerService.UserToken.TryRemove(ui.User.TENDANGNHAP, out tk); } } return(View()); }
//[EnableCors(origins: "*", headers: "*", methods: "*")] public HttpResponseMessage getUserInfors() { SSOUserLoginInfors Us = null, ret = null; string req = SSOHTTPRequestService.getDataInRequest(Request); SSOHtTokenRequestData Data = SSOHTTPRequestService.getDataFromString <SSOHtTokenRequestData>(req); bool check = false; if (UserManagerService.CheckRequestAuthentication(Data.Token, out Us)) { if (Data.isTokenFromCookie || Us.FirstTimeToken) { ret = AutoMapper.Mapper.Map <SSOUserLoginInfors, SSOUserLoginInfors>(Us); ret.SuccessGetData = true; ret.ThongBao = "Lấy dữ liệu thành công"; ret.UserCookie = null; ret.FirstTimeToken = false; Us.FirstTimeToken = false; UserManagerService.UsersLoggedIn.AddOrUpdate(Us.Token, Us, (key, existingVal) => { existingVal.FirstTimeToken = Us.FirstTimeToken; return(existingVal); }); check = true; } } if (!check) { ret = new SSOUserLoginInfors(); ret.SuccessGetData = false; ret.ThongBao = "Yêu cầu không hợp lệ"; } return(SSOHTTPRequestService.CreateResponseMessage(ret, HttpStatusCode.OK)); }
protected void Application_BeginRequest(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; var request = app.Request; //với post request thì không cần kiểm tra - phục vụ login POST request if (request.HttpMethod == "POST") { return; } //nếu là request tới wep api service thì tự động bỏ qua kiểm tra, tiếp tục xử lý if (request.Url.AbsolutePath.Contains("/api/")) { return; } //Lấy thông tin xác thực từ request SSOHttpRequestParams par = SSOHTTPRequestService.GetRequestParams(request); //ngừng xử lý request do không xác định được return url sau khi xác thực if (par == null || par.ReturnUrl == null || par.ReturnUrl.Equals("")) { Utility.WriteToLogFile(DateTime.Now.ToString("dd/MM/yyyy") + ": ngừng xử lý request do không xác định được return url sau khi xác thực"); Utility.WriteToLogFile(DateTime.Now.ToString("dd/MM/yyyy") + JsonConvert.SerializeObject(par)); app.CompleteRequest(); return; } //Chỉ xử lý cho login, logout request, nếu không phải thì ngừng xử lý if (par.Action == null || !(par.Action.Equals(SSOConstants.ParamValues.LOGIN) || par.Action.Equals(SSOConstants.ParamValues.LOGOUT))) { Utility.WriteToLogFile(DateTime.Now.ToString("dd/MM/yyyy") + ": Chỉ xử lý cho login, logout request, nếu không phải thì ngừng xử lý"); app.CompleteRequest(); return; } //Logout if (par.Action.Equals(SSOConstants.ParamValues.LOGOUT)) { Utility.WriteToLogFile(DateTime.Now.ToString("dd/MM/yyyy") + ": Logout request"); UserManagerService.LogoutUser(par, SSOConstants.Cookie.AUTH_COOKIE, app); //Redirect user to default page SSOHTTPRequestService.Redirect(par.ReturnUrl, "", app); app.CompleteRequest(); return; } //Nếu là post back thì tiếp tục xử lý như bình thường - dùng cho login page post back //if (HttpContext.Current.Request.HttpMethod == "POST") return; //Session["RequestParams"] = par; //Yêu cầu login hoặc chưa xác thực, tiếp tục xử lý xác thực như bình thường if (par.Token == null || par.Token.Equals("")) { return; } //Xử lý cho trường hợp request đã xác thực, gửi lại token và redirect người dùng về trang yêu cầu //Nếu chưa xác thực, mở trang login phục vụ xác thực trước khi redirect tới trang yêu cầu SSOUserLoginInfors Us = null; if (UserManagerService.CheckRequestAuthentication(par.Token, out Us)) { Utility.WriteToLogFile(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + ": đã xác thực, ngừng xử lý"); app.Response.Cookies.Add(Us.UserCookie); Us.FirstTimeToken = true; UserManagerService.UsersLoggedIn.AddOrUpdate(Us.Token, Us, (key, existingVal) => { existingVal.FirstTimeToken = Us.FirstTimeToken; return(existingVal); }); SSOHTTPRequestService.Redirect(par.ReturnUrl, par.Token, app); app.CompleteRequest(); } }