当前位置: 首页 > 编程语言 > C#

如何在ASP.NETIdentity1.1中构建TokenProvidernightly?

时间:2023-04-10 22:42:38 C#

如何在ASP.NETIdentity1.1中每晚构建一个TokenProvider?我正在尝试使用每晚构建的ASP.NETIdentity1.1来实现密码重置功能。有一个UserManager.GetPasswordResetToken方法,但它抛出异常“没有注册ITokenProvider”。ASP.NETIdentity中是否有内置令牌提供程序?如果是,我该如何注册?如果没有,我该如何实施?将成为1.1中的默认令牌提供者。发布?最后一个问题,是否有1.1的预计发布日期?默认令牌提供程序实现可以在Microsoft.Identity.Owin包中找到://////使用DataProtector生成加密令牌的令牌提供程序///publicclassDataProtectorTokenProvider:ITokenProvider{publicDataProtectorTokenProvider(IDataProtectorprotector)使用OWINIAppBuilder的默认数据保护提供程序来连接像这样的东西IDataProtectionProviderprovider=app.GetDataProtectionProvider();if(provider!=null){manager.PasswordResetTokens=newDataProtectorTokenProvider(provider.Create("PasswordReset"));经理。UserConfirmationTokens=newDataProtectorTokenProvider(provider.Create("ConfirmUser"));如果有人在AspNet.Identity2.0beta1版本下寻找解决方案。只有这个需要修改。UserManager.UserTokenProvider=newDataProtectorTokenProvider(provider.Create("UserToken"))asIUserTokenProvider;PasswordResetTokens和UserConfirmationTokens被合并到UserTokenProvider属性中,令牌提供者类也被修改。另一种方法(基于其他答案,但稍微简化了一点)是更改Startup.Auth.cs,使其看起来像这样:publicpartialclassStartup{internalstaticIDataProtectionProviderDataProtectionProvider{get;私有集;}publicvoidConfigureAuth(IAppBuilderapp){DataProtectionProvider=app.GetDataProtectionProvider();然后,将AccountController.cs的默认构造函数修改为:publicAccountController():this(newUserManager(newUserStore(newApplicationDbContext()))){if(Startup.DataProtectionProvider!=null){this.UserManager.PasswordResetTokens=newDataProtectorTokenProvider(Startup.DataProtectionProvider.Create("PasswordReset"));this.UserManager.UserConfirmationTokens=newDataProtectorTokenProvider(Startup.DataProvider.Create("Confirm));}}好的,根据@hao-kung的回复回答我自己的问题。首先在Statrup类(startup.auth.cs)中添加静态构造函数和UserManagerFactorypublicpartialclassStartup{staticStartup(){UserManagerFactory=()=>newUserManager(newUserStore());}publicstaticFunc>UserManagerFactory{get;放;}publicvoidConfigureAuth(IAppBuilderapp){varmanager=UserManagerFactory();IDataProtectionProviderprovider=app.GetDataProtectionProvider();if(provider!=null){manager.PasswordResetTokens=newDataProtectorTokenProvider(provider.Create("PasswordReset"));manager.UserConfirmationTokens=newDataProtectorTokenProvider(provider.Create("ConfirmUser"));}app.UseCookieAuthentication(newCookieAuthenticationOptions());app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);然后在AccountInitializeUserManager中使用UserManagerFactory以上是C#学习教程:如何在ASP.NETIdentity1.1中每晚构建一个TokenProvider?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicAccountController():this(Startup.UserManagerFactory()){}publicAccountController(UserManageruserManager){UserManager=userManager;}publicUserManagerUserManager{get;私有集;}本文收集自网络,不代表立场。: