Пример #1
0
        //[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));
        }
Пример #2
0
        //[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));
        }
Пример #3
0
        //[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));
        }
Пример #4
0
        //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());
        }
Пример #6
0
        //[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));
        }
Пример #7
0
        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();
            }
        }