我在我的应用中使用oauth和owin进行身份验证。 我想在一个区间中用新的声明重新生成标识,但从未调用分配给它的函数处理程序的方法 这是我的代码:
public static void ConfigureCookieAuthentication(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie,
ExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, PouyaKianParham.ContentProviderSystem.BusinessObjectLayer.Account.Models.ApplicationUser, int>(
validateInterval: TimeSpan.FromSeconds(15),
regenerateIdentityCallback: (a, b) => GenerateUserIdentityAsync(null,null),
getUserIdCallback: (id) => (id.GetUserId<int>()))
},
LoginPath = new PathString("/Account/Login")
});
}
这是我的回调方法(也在OAuthconfig.cs中):
public static async Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager ApplicationUserManager, UserManager manager)
{
//regenrating identity with new claims
return identitywithClaim;
}
提前致谢
答案 0 :(得分:0)
我遇到了同样的问题,但以下情况对我有用。
我使用UserStore,UserManager等的自定义实现。事实证明,UserStore必须实现IUserSecurityStampStore<TUser, in TKey>
。
实现后,regenerateIdentityCallback
委托在需要时被调用,一切都运行得很好。