// Methods public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) { #region Contracts if (options == null) throw new ArgumentNullException(); if (context == null) throw new ArgumentNullException(); #endregion // 建立使用者管理員 var userManager = new ApplicationUserManager(context.Get<ApplicationDbContext>()); if (userManager == null) throw new InvalidOperationException(); // 設定使用者名稱的驗證邏輯 userManager.UserValidator = new UserValidator<ApplicationUser>(userManager) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // 設定密碼的驗證邏輯 userManager.PasswordValidator = new PasswordValidator { RequiredLength = 5, // 最小長度 RequireNonLetterOrDigit = false, // 是否需要一個非字母或是數字 RequireDigit = false, // 是否需要一個數字 RequireLowercase = false, // 是否需要一個小寫字母 RequireUppercase = false, // 是否需要一個大寫字母 }; // 設定使用者鎖定詳細資料 userManager.UserLockoutEnabledByDefault = true; userManager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); userManager.MaxFailedAccessAttemptsBeforeLockout = 5; // 註冊雙因素驗證提供者。此應用程式使用手機和電子郵件接收驗證碼以驗證使用者 // 您可以撰寫專屬提供者,並將它外掛到這裡。 userManager.RegisterTwoFactorProvider("電話代碼", new PhoneNumberTokenProvider<ApplicationUser> { MessageFormat = "您的安全碼為 {0}" }); userManager.RegisterTwoFactorProvider("電子郵件代碼", new EmailTokenProvider<ApplicationUser> { Subject = "安全碼", BodyFormat = "您的安全碼為 {0}" }); userManager.EmailService = new EmailService(); userManager.SmsService = new SmsService(); var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { userManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); } // 回傳 return userManager; }
// Methods public async Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager manager) { // 注意 authenticationType 必須符合 CookieAuthenticationOptions.AuthenticationType 中定義的項目 var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); // 在這裡新增自訂使用者宣告 return userIdentity; }
public static ApplicationSignInManager Create(ApplicationUserManager userManager, IAuthenticationManager authenticationManager) { return new ApplicationSignInManager(userManager, authenticationManager); }
protected override void Dispose(bool disposing) { if (disposing && _userManager != null) { _userManager.Dispose(); _userManager = null; } base.Dispose(disposing); }
public ManageController(ApplicationUserManager userManager, ApplicationSignInManager signInManager) { UserManager = userManager; SignInManager = signInManager; }
public RolesAdminController(ApplicationUserManager userManager, ApplicationRoleManager roleManager, ApplicationPermissionManager permissionManager) { this.UserManager = userManager; this.RoleManager = roleManager; this.PermissionManager = permissionManager; }
protected override void Dispose(bool disposing) { if (disposing) { if (_userManager != null) { _userManager.Dispose(); _userManager = null; } if (_signInManager != null) { _signInManager.Dispose(); _signInManager = null; } } base.Dispose(disposing); }