Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Security / RoleManagerModule.cs / 6 / RoleManagerModule.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * RoleManagerModule class * * Copyright (c) 1999 Microsoft Corporation */ namespace System.Web.Security { using System.Collections; using System.Security.Principal; using System.Security.Permissions; using System.Text; using System.Threading; using System.Web; using System.Web.Configuration; using System.Web.Caching; using System.Web.Util; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class RoleManagerModule : IHttpModule { private const int MAX_COOKIE_LENGTH = 4096; private RoleManagerEventHandler _eventHandler; ///[To be supplied.] ////// [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] public RoleManagerModule() { } public event RoleManagerEventHandler GetRoles { add { HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level); _eventHandler += value; } remove { _eventHandler -= value; } } ////// Initializes a new instance of the ////// class. /// /// public void Dispose() { } ///[To be supplied.] ////// public void Init(HttpApplication app) { // for IIS 7, skip wireup of these delegates altogether unless the // feature is enabled for this application // this avoids the initial OnEnter transition unless it's needed if (Roles.Enabled) { app.PostAuthenticateRequest += new EventHandler(this.OnEnter); app.EndRequest += new EventHandler(this.OnLeave); } } //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///[To be supplied.] ////// private void OnEnter(Object source, EventArgs eventArgs) { if (!Roles.Enabled) { if (HttpRuntime.UseIntegratedPipeline) { ((HttpApplication)source).Context.DisableNotifications(RequestNotification.EndRequest, 0); } return; } HttpApplication app = (HttpApplication)source; HttpContext context = app.Context; if (_eventHandler != null) { RoleManagerEventArgs e = new RoleManagerEventArgs(context); _eventHandler(this, e); if (e.RolesPopulated) return; } Debug.Assert(null != context.User, "null != context.User"); if (Roles.CacheRolesInCookie) { if (context.User.Identity.IsAuthenticated && (!Roles.CookieRequireSSL || context.Request.IsSecureConnection)) { // Try to create from cookie try { HttpCookie cookie = context.Request.Cookies[Roles.CookieName]; if (cookie != null) { string cookieValue = cookie.Value; // Ignore cookies that are too long if (cookieValue != null && cookieValue.Length > MAX_COOKIE_LENGTH) { Roles.DeleteCookie(); } else { if (!String.IsNullOrEmpty(Roles.CookiePath) && Roles.CookiePath != "/") { cookie.Path = Roles.CookiePath; } cookie.Domain = Roles.Domain; context.User = new RolePrincipal(context.User.Identity, cookieValue); } } } catch { } // skip exceptions } else { if (context.Request.Cookies[Roles.CookieName] != null) Roles.DeleteCookie(); // if we're not using cookie caching, we don't need the EndRequest // event and can suppress it if (HttpRuntime.UseIntegratedPipeline) { context.DisableNotifications(RequestNotification.EndRequest, 0); } } } if (!(context.User is RolePrincipal)) context.User = new RolePrincipal(context.User.Identity); Thread.CurrentPrincipal = context.User; } private void OnLeave(Object source, EventArgs eventArgs) { HttpApplication app; HttpContext context; app = (HttpApplication)source; context = app.Context; if (!Roles.Enabled || !Roles.CacheRolesInCookie || context.Response.HeadersWritten) return; if (context.User == null || !(context.User is RolePrincipal) || !context.User.Identity.IsAuthenticated) return; if (Roles.CookieRequireSSL && !context.Request.IsSecureConnection) { // if cookie is sent, then clear it if (context.Request.Cookies[Roles.CookieName] != null) Roles.DeleteCookie(); return; } RolePrincipal rp = (RolePrincipal) context.User; if (rp.CachedListChanged && context.Request.Browser.Cookies) { string s = rp.ToEncryptedTicket(); if (string.IsNullOrEmpty(s) || s.Length > MAX_COOKIE_LENGTH) { Roles.DeleteCookie(); } else { HttpCookie cookie = new HttpCookie(Roles.CookieName, s); cookie.HttpOnly = true; cookie.Path = Roles.CookiePath; cookie.Domain = Roles.Domain; if (Roles.CreatePersistentCookie) cookie.Expires = rp.ExpireDate; cookie.Secure = Roles.CookieRequireSSL; context.Response.Cookies.Add(cookie); } } } //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// } }[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Stroke2.cs
- SqlServer2KCompatibilityCheck.cs
- SchemaLookupTable.cs
- basecomparevalidator.cs
- OrthographicCamera.cs
- PersistenceMetadataNamespace.cs
- PresentationSource.cs
- RecognitionResult.cs
- ThreadInterruptedException.cs
- WebBrowsableAttribute.cs
- SqlFunctionAttribute.cs
- SimplePropertyEntry.cs
- SimpleTextLine.cs
- ApplyImportsAction.cs
- HttpApplicationStateBase.cs
- FutureFactory.cs
- WebHeaderCollection.cs
- TemplateBamlRecordReader.cs
- AsyncContentLoadedEventArgs.cs
- TextRange.cs
- SmiXetterAccessMap.cs
- BoundsDrawingContextWalker.cs
- XmlTypeMapping.cs
- DataKey.cs
- Sequence.cs
- MULTI_QI.cs
- CodeDOMUtility.cs
- StrongName.cs
- CmsInterop.cs
- LayoutEditorPart.cs
- BasicHttpBindingCollectionElement.cs
- EventLevel.cs
- HtmlUtf8RawTextWriter.cs
- VisualCollection.cs
- LabelAutomationPeer.cs
- DbXmlEnabledProviderManifest.cs
- SmiRequestExecutor.cs
- InputScope.cs
- ShaperBuffers.cs
- SHA256Managed.cs
- DisplayInformation.cs
- ImageDrawing.cs
- EffectiveValueEntry.cs
- QuadraticBezierSegment.cs
- SchemaImporterExtensionElement.cs
- TableCellCollection.cs
- FrugalMap.cs
- GraphicsContext.cs
- CalendarDesigner.cs
- HttpCacheVary.cs
- sortedlist.cs
- GeometryHitTestResult.cs
- DelegateArgumentValue.cs
- RequestCacheEntry.cs
- NodeLabelEditEvent.cs
- MenuItemStyleCollection.cs
- ContainerUIElement3D.cs
- log.cs
- RuleRefElement.cs
- PluralizationServiceUtil.cs
- WebBrowserPermission.cs
- SiteMapDesignerDataSourceView.cs
- UriTemplateMatchException.cs
- BufferedGraphicsContext.cs
- WCFServiceClientProxyGenerator.cs
- PageStatePersister.cs
- DynamicControlParameter.cs
- IntSecurity.cs
- HtmlInputImage.cs
- EmptyReadOnlyDictionaryInternal.cs
- InteropBitmapSource.cs
- EntityDataSource.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- FormsAuthenticationModule.cs
- CollectionsUtil.cs
- GridItemPattern.cs
- ContentValidator.cs
- Rotation3DAnimationBase.cs
- PointLightBase.cs
- ListBoxItem.cs
- FilterQueryOptionExpression.cs
- FrameDimension.cs
- UIElementAutomationPeer.cs
- ProxyElement.cs
- TextElementEditingBehaviorAttribute.cs
- GuidelineSet.cs
- ICollection.cs
- CompoundFileDeflateTransform.cs
- CompensationDesigner.cs
- RuleSet.cs
- UriParserTemplates.cs
- ReferenceConverter.cs
- IssuedSecurityTokenParameters.cs
- ScrollViewerAutomationPeer.cs
- DelayDesigner.cs
- WindowsProgressbar.cs
- SlipBehavior.cs
- Crc32.cs
- SafeLibraryHandle.cs
- SchemaTableColumn.cs