Kann nicht UserManager von OwinContext in apicontroller
Bin ich nach einem Microsoft-Probe zu implementieren E-Mail-Bestätigung mit Identity 2.0.0
Ich bin stecken in diesem Teil
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
Diese Werke in einer controller
aber HttpContext
enthalten keine GetOwinContext
- Methode in einer ApiController.
Also versuchte ich HttpContext.Current.GetOwinContext()
aber die Methode GetUserManager
existiert nicht.
Ich kann nicht herausfinden, ein Weg, um die UserManager
ich Baue in Start.Auth.cs
//For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
//Configure the db context, user manager and role manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
...
}
diese Zeile
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
ruft die folgende Funktion zum konfigurieren der UserManager
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
//Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
//Configure user lockout defaults
manager.UserLockoutEnabledByDefault = true;
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
manager.MaxFailedAccessAttemptsBeforeLockout = 5;
manager.EmailService = new EmailService();
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity"));
}
return manager;
}
Wie kann ich Zugriff auf diese UserManager
in einem ApiController
?
InformationsquelleAutor der Frage Marc | 2014-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich wirklich falsch verstanden, deine Frage früher. Fehlt Ihnen nur noch einige Anweisungen, wie ich finde.
Den
GetOwinContext().GetUserManager<ApplicationUserManager>()
ist inMicrosoft.AspNet.Identity.Owin
.Versuchen So fügen Sie diesen Teil:
InformationsquelleAutor der Antwort Rikard
Diese Erweiterung Methode kann eine bessere Lösung, wenn man unit-Tests Ihre Controller.
Verwendung:
InformationsquelleAutor der Antwort moander
Diese einzige Zeile code meinen Tag gerettet...
Können Sie es innerhalb einer controller-action um eine Instanz von UserManager.
InformationsquelleAutor der Antwort mubsher