使用aspnet标识的附加验证



我正在使用AspnetIdentity进行额外的验证,但它不起作用,这给了我这个错误。这是我的接口代码。

using Health.BLL.CustomModels.UserModels;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Health.BLL.AuthRepository
{
public interface IAuthRepository
{
Task<IdentityResult> RegisterUser(UserModel userModel);
Task<IdentityUser> FindUser(string userName, string password);
Task<IList<string>> GetRolesAsync(string userid);
Task<IdentityResult> ValidateAsync<TUser>(UserManager<TUser> manager, TUser user) where TUser : class;
}
}

有关错误参考,请参阅下图。

类型"TUser"不能用作泛型类型或方法"UserManager"。没有隐含的从"TUser"到的引用转换"微软。AspNet。身份IUser’。

在此处输入图像描述

传递给UserManager的泛型类型需要实现接口IUser<TKey>,其中TKey是用户的密钥类型,可以是字符串、int等。

因此,假设您的用户密钥类型(TKey(是字符串,请将ValidateAsync的合约更改为:

Task<IdentityResult> ValidateAsync<TUser>(UserManager<TUser> manager, TUser user) 
where TUser : class, IUser<string>;

有关更多详细信息,请参阅文档:https://learn.microsoft.com/en-us/previous-versions/aspnet/dn468199(v=vs.108

试试看,让我知道它是否有效。

Muhammad,也许您使用的Nuget包有问题?。。。

我试图重现你的错误,但一切都很好!我在一个使用Asp的项目中测试了你的代码。Net Core 2.2,在另一个中使用Asp。Net Core 3.0/3.1。

对于Asp中的项目。Net Core 2.2,我安装了Nuget软件包Microsoft。AspNet。身份EntityFrameworkCore 2.2.3版。

以及Asp制作的项目。Net Core 3.0/3.1,我安装了相同的Nuget软件包,但版本为3.1.3。

还有我用来测试的代码:

using Microsoft.AspNetCore.Identity;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace WebApplication1
{
public interface IAuthRepository
{
Task<IdentityUser> FindUser(string userName, string password);
Task<IList<string>> GetRolesAsync(string userid);
Task<IdentityResult> ValidateAsync<TUser>(UserManager<TUser> manager, TUser user) where TUser : class;
}
}

也许你应该用Asp的版本来编辑你的问题。Net Framework,以及您正在使用的Nuget Package for Identity。

相关内容

  • 没有找到相关文章

最新更新