mongodbで新しくIdentityServer4.MongoDBを使用してログイントークンを作成しようとしています。 私はすでに "IdentityServer4": "1.0.0-rc4-update1"を使って簡単なソリューションを作っていましたが、データベースはSql Serverでした。IdentityServer4.MongoDBを使用してトークンを取得
今私はmongodbデータベースを使って同じことをしたいと思います。私はIdentityServer4.MongoDBサンプルのサンプルをたくさん検索しますが、解決策が見つからずにIdentityServer4.MongoDBを探しています。私が変えなければならない1つのクラスだけ完璧に働くすべてのもの。そして私はmongodbのためにその変更を行うことができませんでした。それでも私はそれを探しています。
以下は、私がSQL Serverで作成したコードで、IdentityServer4.MongoDBを使用して同じタスクを実行するコードです。
ResourceOwnerPasswordValidator.cs:IdentityServer4.MongoDBクラス "InMemoryUser" で
public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{
public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
{
//dapper.net for getting user from DB
using (IDbConnection db = new SqlConnection("Data Source=.;Initial Catalog=TestDB;Integrated Security=True"))
{
var user = db.Query<User>("SELECT * FROM Registration WHERE [email protected] AND [email protected]",
new { Username = context.UserName, Password = context.Password }).SingleOrDefault();
if (user == null)
{
context.Result = new GrantValidationResult(TokenErrors.InvalidRequest, "Username or password is incorrect");
return Task.FromResult(0);
}
#region
var users = new List<InMemoryUser>
{
new InMemoryUser
{
Subject = "818727",
Username = user.Username,
Password = user.Password,
Claims = new Claim[]
{
new Claim(JwtClaimTypes.Name, user.FirstName),
new Claim(JwtClaimTypes.GivenName, user.FirstName),
new Claim(JwtClaimTypes.FamilyName, user.LastName),
new Claim(JwtClaimTypes.Email, user.Email)
}
}
};
#endregion
context.Result = new GrantValidationResult(user.Id.ToString(), "Password", users[0].Claims);
return Task.FromResult(0);
}
}
}
が機能していません。 どうすれば解決できますか? mongodbに "InMemoryUser"の代わりに何を使用できますか?
ありがとうございます。