Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Security / Membership.cs / 1305376 / Membership.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Security { using System.Web; using System.Web.Configuration; using System.Security.Principal; using System.Security.Permissions; using System.Globalization; using System.Runtime.Serialization; using System.Collections; using System.Security.Cryptography; using System.Configuration.Provider; using System.Text; using System.Configuration; using System.Web.Management; using System.Web.Hosting; using System.Threading; using System.Web.Util; using System.Collections.Specialized; using System.Web.Compilation; ////// // This has no hosting permission demands because of DevDiv Bugs 31461: ClientAppSvcs: ASP.net Provider support public static class Membership { public static bool EnablePasswordRetrieval { get { Initialize(); return Provider.EnablePasswordRetrieval;}} public static bool EnablePasswordReset { get { Initialize(); return Provider.EnablePasswordReset;}} public static bool RequiresQuestionAndAnswer { get { Initialize(); return Provider.RequiresQuestionAndAnswer;}} public static int UserIsOnlineTimeWindow { get { Initialize(); return s_UserIsOnlineTimeWindow; }} public static MembershipProviderCollection Providers { get { Initialize(); return s_Providers; }} public static MembershipProvider Provider { get { Initialize(); if (s_Provider == null) { throw new InvalidOperationException(SR.GetString(SR.Def_membership_provider_not_found)); } return s_Provider; } } public static string HashAlgorithmType { get { Initialize(); return s_HashAlgorithmType; }} internal static bool IsHashAlgorithmFromMembershipConfig { get { Initialize(); return s_HashAlgorithmFromConfig; }} public static int MaxInvalidPasswordAttempts { get { Initialize(); return Provider.MaxInvalidPasswordAttempts; } } public static int PasswordAttemptWindow { get { Initialize(); return Provider.PasswordAttemptWindow; } } public static int MinRequiredPasswordLength { get { Initialize(); return Provider.MinRequiredPasswordLength; } } public static int MinRequiredNonAlphanumericCharacters { get { Initialize(); return Provider.MinRequiredNonAlphanumericCharacters; } } public static string PasswordStrengthRegularExpression { get { Initialize(); return Provider.PasswordStrengthRegularExpression; } } public static string ApplicationName { get { return Provider.ApplicationName; } set { Provider.ApplicationName = value; } } public static MembershipUser CreateUser(string username, string password) { return CreateUser(username, password, null); } public static MembershipUser CreateUser(string username, string password, string email) { MembershipCreateStatus status; MembershipUser u = CreateUser(username, password, email,null,null,true, out status); if (u == null) throw new MembershipCreateUserException(status); return u; } public static MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, out MembershipCreateStatus status) { return CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, null, out status); } public static MembershipUser CreateUser( string username, string password, string email, string passwordQuestion,string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status ) { if( !SecUtility.ValidateParameter(ref username, true, true, true, 0)) { status = MembershipCreateStatus.InvalidUserName; return null; } if( !SecUtility.ValidatePasswordParameter(ref password, 0)) { status = MembershipCreateStatus.InvalidPassword; return null; } if( !SecUtility.ValidateParameter( ref email, false, false, false, 0)) { status = MembershipCreateStatus.InvalidEmail; return null; } if( !SecUtility.ValidateParameter(ref passwordQuestion, false, true, false, 0)) { status = MembershipCreateStatus.InvalidQuestion; return null; } if( !SecUtility.ValidateParameter(ref passwordAnswer, false, true, false, 0)) { status = MembershipCreateStatus.InvalidAnswer; return null; } return Provider.CreateUser( username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status); } public static bool ValidateUser(string username, string password) { return Provider.ValidateUser(username, password); /* if (retVal) { PerfCounters.IncrementCounter(AppPerfCounter.MEMBER_SUCCESS); WebBaseEvent.RaiseSystemEvent(null, WebEventCodes.AuditMembershipAuthenticationSuccess, username); } else { PerfCounters.IncrementCounter(AppPerfCounter.MEMBER_FAIL); WebBaseEvent.RaiseSystemEvent(null, WebEventCodes.AuditMembershipAuthenticationFailure, username); } return retVal; */ } public static MembershipUser GetUser() { return GetUser(GetCurrentUserName(), true); } public static MembershipUser GetUser(bool userIsOnline) { return GetUser(GetCurrentUserName(), userIsOnline); } public static MembershipUser GetUser(string username) { return GetUser(username, false); } public static MembershipUser GetUser(string username, bool userIsOnline) { SecUtility.CheckParameter( ref username, true, false, true, 0, "username" ); return Provider.GetUser(username, userIsOnline); } public static MembershipUser GetUser( object providerUserKey ) { return GetUser( providerUserKey, false); } public static MembershipUser GetUser( object providerUserKey, bool userIsOnline ) { if( providerUserKey == null ) { throw new ArgumentNullException( "providerUserKey" ); } return Provider.GetUser( providerUserKey, userIsOnline); } public static string GetUserNameByEmail( string emailToMatch ) { SecUtility.CheckParameter( ref emailToMatch, false, false, false, 0, "emailToMatch" ); return Provider.GetUserNameByEmail( emailToMatch ); } public static bool DeleteUser(string username) { SecUtility.CheckParameter( ref username, true, true, true, 0, "username" ); return Provider.DeleteUser( username, true ); } public static bool DeleteUser(string username, bool deleteAllRelatedData) { SecUtility.CheckParameter( ref username, true, true, true, 0, "username" ); return Provider.DeleteUser( username, deleteAllRelatedData ); } public static void UpdateUser( MembershipUser user ) { if( user == null ) { throw new ArgumentNullException( "user" ); } user.Update(); } public static MembershipUserCollection GetAllUsers() { int totalRecords = 0; return GetAllUsers( 0, Int32.MaxValue, out totalRecords); } public static MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords) { if ( pageIndex < 0 ) { throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); } if ( pageSize < 1 ) { throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize"); } return Provider.GetAllUsers(pageIndex, pageSize, out totalRecords); } public static int GetNumberOfUsersOnline() { return Provider.GetNumberOfUsersOnline(); } private static char [] punctuations = "!@#$%^&*()_-+=[{]};:>|./?".ToCharArray(); public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters) { if (length < 1 || length > 128) { throw new ArgumentException(SR.GetString(SR.Membership_password_length_incorrect)); } if( numberOfNonAlphanumericCharacters > length || numberOfNonAlphanumericCharacters < 0 ) { throw new ArgumentException(SR.GetString(SR.Membership_min_required_non_alphanumeric_characters_incorrect, "numberOfNonAlphanumericCharacters")); } string password; int index; byte[] buf; char[] cBuf; int count; do { buf = new byte[length]; cBuf = new char[length]; count = 0; (new RNGCryptoServiceProvider()).GetBytes(buf); for(int iter=0; iter[To be supplied.] ///". // If the validation is "3DES", switch it to use "SHA1" instead. MachineKeyValidation v = appConfig.MachineKey.Validation; if (v != MachineKeyValidation.AES && v != MachineKeyValidation.TripleDES) s_HashAlgorithmType = appConfig.MachineKey.ValidationAlgorithm; else s_HashAlgorithmType = "SHA1"; } s_Providers = new MembershipProviderCollection(); if (HostingEnvironment.IsHosted) { ProvidersHelper.InstantiateProviders(settings.Providers, s_Providers, typeof(MembershipProvider)); } else { foreach (ProviderSettings ps in settings.Providers) { Type t = Type.GetType(ps.Type, true, true); if (!typeof(MembershipProvider).IsAssignableFrom(t)) throw new ArgumentException(SR.GetString(SR.Provider_must_implement_type, typeof(MembershipProvider).ToString())); MembershipProvider provider = (MembershipProvider)Activator.CreateInstance(t); NameValueCollection pars = ps.Parameters; NameValueCollection cloneParams = new NameValueCollection(pars.Count, StringComparer.Ordinal); foreach (string key in pars) cloneParams[key] = pars[key]; provider.Initialize(ps.Name, cloneParams); s_Providers.Add(provider); } } TimeSpan timeWindow = settings.UserIsOnlineTimeWindow; s_UserIsOnlineTimeWindow = (int)timeWindow.TotalMinutes; return true; } private static bool InitializeDefaultProvider(bool initializeDefaultProvider, MembershipSection settings) { if (!initializeDefaultProvider) { return false; } s_Providers.SetReadOnly(); if (settings.DefaultProvider == null || s_Providers.Count < 1) throw new ProviderException(SR.GetString(SR.Def_membership_provider_not_specified)); s_Provider = s_Providers[settings.DefaultProvider]; if (s_Provider == null) { throw new ConfigurationErrorsException(SR.GetString(SR.Def_membership_provider_not_found), settings.ElementInformation.Properties["defaultProvider"].Source, settings.ElementInformation.Properties["defaultProvider"].LineNumber); } return true; } public static MembershipUserCollection FindUsersByName( string usernameToMatch, int pageIndex, int pageSize, out int totalRecords ) { SecUtility.CheckParameter( ref usernameToMatch, true, true, false, 0, "usernameToMatch" ); if ( pageIndex < 0 ) { throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); } if ( pageSize < 1 ) { throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize"); } return Provider.FindUsersByName( usernameToMatch, pageIndex, pageSize, out totalRecords); } public static MembershipUserCollection FindUsersByName( string usernameToMatch ) { SecUtility.CheckParameter( ref usernameToMatch, true, true, false, 0, "usernameToMatch" ); int totalRecords = 0; return Provider.FindUsersByName( usernameToMatch, 0, Int32.MaxValue, out totalRecords ); } public static MembershipUserCollection FindUsersByEmail( string emailToMatch, int pageIndex, int pageSize, out int totalRecords ) { SecUtility.CheckParameter( ref emailToMatch, false, false, false, 0, "emailToMatch" ); if ( pageIndex < 0 ) { throw new ArgumentException(SR.GetString(SR.PageIndex_bad), "pageIndex"); } if ( pageSize < 1 ) { throw new ArgumentException(SR.GetString(SR.PageSize_bad), "pageSize"); } return Provider.FindUsersByEmail( emailToMatch, pageIndex, pageSize, out totalRecords ); } public static MembershipUserCollection FindUsersByEmail(string emailToMatch) { SecUtility.CheckParameter( ref emailToMatch, false, false, false, 0, "emailToMatch" ); int totalRecords = 0; return FindUsersByEmail(emailToMatch, 0, Int32.MaxValue, out totalRecords); } private static string GetCurrentUserName() { if (HostingEnvironment.IsHosted) { HttpContext cur = HttpContext.Current; if (cur != null) return cur.User.Identity.Name; } IPrincipal user = Thread.CurrentPrincipal; if (user == null || user.Identity == null) return String.Empty; else return user.Identity.Name; } public static event MembershipValidatePasswordEventHandler ValidatingPassword { add { Provider.ValidatingPassword += value; } remove { Provider.ValidatingPassword -= value; } } private static MembershipProviderCollection s_Providers; private static MembershipProvider s_Provider; private static int s_UserIsOnlineTimeWindow = 15; private static object s_lock = new object(); private static bool s_Initialized = false; private static bool s_InitializedDefaultProvider; private static Exception s_InitializeException = null; private static string s_HashAlgorithmType; private static bool s_HashAlgorithmFromConfig; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SendMailErrorEventArgs.cs
- FtpCachePolicyElement.cs
- controlskin.cs
- BatchStream.cs
- SchemaLookupTable.cs
- SqlCacheDependencyDatabase.cs
- Token.cs
- QuotedPairReader.cs
- XslCompiledTransform.cs
- RelationshipWrapper.cs
- Visual.cs
- CheckBoxBaseAdapter.cs
- ContractCodeDomInfo.cs
- OpenFileDialog.cs
- MaskedTextProvider.cs
- XMLDiffLoader.cs
- Maps.cs
- InternalDuplexBindingElement.cs
- SqlLiftWhereClauses.cs
- ZoneMembershipCondition.cs
- BoolLiteral.cs
- SafeNativeMethodsOther.cs
- PackagingUtilities.cs
- CharStorage.cs
- HttpClientCertificate.cs
- ListenerAdapterBase.cs
- Policy.cs
- ViewBase.cs
- AlternateViewCollection.cs
- Group.cs
- Sql8ConformanceChecker.cs
- CodeMethodInvokeExpression.cs
- SafeSecurityHelper.cs
- SystemBrushes.cs
- GradientBrush.cs
- WebBrowserProgressChangedEventHandler.cs
- FacetEnabledSchemaElement.cs
- FullTextBreakpoint.cs
- QueueException.cs
- SplineKeyFrames.cs
- XhtmlCssHandler.cs
- SupportsEventValidationAttribute.cs
- TraceContext.cs
- WebSysDescriptionAttribute.cs
- DataSourceCacheDurationConverter.cs
- EmptyControlCollection.cs
- ToolStripRenderEventArgs.cs
- _Semaphore.cs
- DesignerActionPanel.cs
- ActiveXHelper.cs
- TranslateTransform.cs
- FamilyMapCollection.cs
- SaveFileDialogDesigner.cs
- CodeAccessSecurityEngine.cs
- WebMessageEncoderFactory.cs
- TimelineCollection.cs
- HMACSHA256.cs
- WindowsListView.cs
- XmlSchemaComplexType.cs
- SerializationEventsCache.cs
- VariableQuery.cs
- FileDialogCustomPlaces.cs
- IconHelper.cs
- WebHttpElement.cs
- ColumnCollectionEditor.cs
- Localizer.cs
- CodeLinePragma.cs
- Panel.cs
- PartialClassGenerationTaskInternal.cs
- SymmetricKeyWrap.cs
- SlotInfo.cs
- ServiceSecurityContext.cs
- DesignerActionListCollection.cs
- SurrogateSelector.cs
- DataTableNewRowEvent.cs
- NameValueFileSectionHandler.cs
- TransactionScope.cs
- HttpFileCollection.cs
- OdbcConnectionString.cs
- SqlDataRecord.cs
- ButtonRenderer.cs
- ValidatedMobileControlConverter.cs
- CustomErrorsSectionWrapper.cs
- HttpHandlerActionCollection.cs
- Style.cs
- PassportPrincipal.cs
- FileAuthorizationModule.cs
- ErrorLog.cs
- ImageConverter.cs
- ToolboxItem.cs
- AnnotationStore.cs
- HttpModuleActionCollection.cs
- ListViewUpdateEventArgs.cs
- Vector3DKeyFrameCollection.cs
- HttpContextServiceHost.cs
- BaseValidator.cs
- SqlClientWrapperSmiStreamChars.cs
- ObjectConverter.cs
- VirtualizingStackPanel.cs
- NamespaceTable.cs