/// <summary>
        /// Occurs before the action method is invoked.
        /// </summary>
        /// <param name="actionContext">The action context.</param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
#if NET45
            IPrincipal principal = actionContext.RequestContext.Principal;
#else
            IPrincipal principal = Thread.CurrentPrincipal;
#endif
            //用户未登录,不统计游客信息
            if (principal == null || !principal.Identity.IsAuthenticated)
            {
                return;
            }
            OnlineUser user = OnlineUserStore.GetCurrentApiUser(principal);
            if (user == null)
            {
                string name = principal.Identity.Name;
                try
                {
                    user = CreateOnlineUser(name, actionContext.Request);
                }
                catch (UnauthorizedAccessException e)
                {
                    actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, e.Message);
                    return;
                }
            }
            string url = actionContext.Request.RequestUri.AbsolutePath;
            if (!IgnoreActivityUrls.Contains(url))
            {
                user.LastActivityUrl = url;
            }
            user.IpAddress        = actionContext.Request.GetClientIpAddress();
            user.LastActivityTime = DateTime.Now;
            OnlineUserStore.Set(user);
        }
Exemple #2
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContextBase context = filterContext.HttpContext;

            if (context == null || !context.User.Identity.IsAuthenticated)
            {
                return;
            }
            OnlineUser user = OnlineUserStore.GetCurrentSiteUser(context.User);

            if (user == null)
            {
                string name = context.User.Identity.Name;
                try
                {
                    user = CreateOnlineUser(name, context);
                }
                catch (UnauthorizedAccessException e)
                {
                    filterContext.Result = new HttpUnauthorizedResult(e.Message);
                    return;
                }
            }
            string url = context.Request.Path;

            if (!context.Request.IsAjaxRequest() && !IgnoreActivityUrls.Contains(url))
            {
                user.LastActivityUrl = url;
            }
            user.IpAddress        = context.Request.UserHostAddress;
            user.LastActivityTime = DateTime.Now;
            OnlineUserStore.Set(user);
        }