Kne*_*lis 7 asp.net owin asp.net-identity
我想知道是否可以在网站1上验证ASP.NET身份用户令牌,这是在网站2上生成的.
在我的例子中,两个网站实际上使用相同的UserManager,这是在两个网站使用的程序集中定义的.Startup.Auth.cs这两个网站是同一性的.但是,在第一个站点上生成的令牌无法在另一个站点上验证.
第一个网站上用于生成令牌的代码:
string userId = User.Identity.GetUserId();
var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
string token = await manager.GenerateUserTokenAsync("SomePurpose", userId);
Run Code Online (Sandbox Code Playgroud)
然后作为查询参数传递给其他网站:
var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
if (await manager.VerifyUserTokenAsync(userId, "SomePurpose", token))
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,验证始终失败.如果我在生成它的同一站点上验证令牌,它就会通过.
以下是令牌提供程序的分配方式ApplicationUserManager(在运行时options.DataProtectionProvider为类型CallDataProtectionProvider):
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider =
new DataProtectorTokenProvider<UserProfile>(dataProtectionProvider.Create("SomeName"));
}
Run Code Online (Sandbox Code Playgroud)
这种行为是故意还是我做错了什么?
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |