Пример #1
0
        /// <summary>
        /// Saves the specified SharePointContext instance associated with the specified HTTP context.
        /// <c>null</c> is accepted for clearing the SharePointContext instance associated with the HTTP context.
        /// </summary>
        /// <param name="spContext">The SharePointContext instance to be saved, or <c>null</c>.</param>
        /// <param name="httpContext">The HTTP context.</param>
        protected override void SaveSharePointContext(SharePointContext spContext, HttpContextBase httpContext)
        {
            if (spContext != null && httpContext != null)
            {
                SharePointAcsContext spAcsContext = spContext as SharePointAcsContext;

                if (spAcsContext != null)
                {
                    HttpCookie spCacheKeyCookie = new HttpCookie(SPCacheKeyKey)
                    {
                        Value    = spAcsContext.CacheKey,
                        Secure   = true,
                        HttpOnly = true
                    };

                    httpContext.Response.AppendCookie(spCacheKeyCookie);
                }

                httpContext.Session[SPContextKey] = spAcsContext;
            }
        }
Пример #2
0
        /// <summary>
        /// Validates if the given SharePointContext can be used with the specified HTTP context.
        /// </summary>
        /// <param name="spContext">The SharePointContext.</param>
        /// <param name="httpContext">The HTTP context.</param>
        /// <returns>
        /// True if the given SharePointContext can be used with the specified HTTP context.
        /// </returns>
        protected override bool ValidateSharePointContext(SharePointContext spContext, HttpContextBase httpContext)
        {
            if (spContext != null && httpContext != null)
            {
                SharePointAcsContext spAcsContext = spContext as SharePointAcsContext;

                if (spAcsContext != null)
                {
                    Uri        spHostUrl        = SharePointContext.GetSPHostUrl(httpContext.Request);
                    string     contextToken     = TokenHelper.GetContextTokenFromRequest(httpContext.Request);
                    HttpCookie spCacheKeyCookie = httpContext.Request.Cookies[SPCacheKeyKey];
                    string     spCacheKey       = spCacheKeyCookie != null ? spCacheKeyCookie.Value : null;

                    return(spHostUrl == spAcsContext.SPHostUrl &&
                           !string.IsNullOrEmpty(spAcsContext.CacheKey) &&
                           spCacheKey == spAcsContext.CacheKey &&
                           !string.IsNullOrEmpty(spAcsContext.ContextToken) &&
                           (string.IsNullOrEmpty(contextToken) || contextToken == spAcsContext.ContextToken));
                }
            }

            return(false);
        }