私はGuidキーで動作するようにASP Identity 2.0をカスタマイズしようとしています。私はa-okでログインできますが、ユーザーデータを取得しようとするといくつかの問題があります。User.Identity.GetUserId()&& User.IsInRole( "rolename")Not Working
いずれもこれらの作業:
User.Identity.GetUserId()
User.Identity.Nameは人口である[いつものようにfalseを返す]
User.IsInRole("rolename")
[常に空の文字列として返し]。
マイログインハンドラ
public class CommandHandler : IRequestHandler<ViewModel, Result>
{
private readonly GuidUserManager _manager;
public CommandHandler(GuidUserManager manager)
{
_manager = manager;
}
public Result Handle(ViewModel criteria)
{
// Verify if a user exists with the provided identity information
var user = _manager.Find(criteria.UserName, criteria.Password);
// If a user was found
if (user == null)
return Result.Fail("Invalid username or password.");
// Clear any lingering authencation data
FormsAuthentication.SignOut();
// Write the authentication cookie
FormsAuthentication.SetAuthCookie(user.UserName, criteria.RememberMe);
return Result.Ok();
}
}
私のアイデンティティコード
using System;
using System.Data.Entity;
using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
namespace FM.Web.Security
{
public class GuidUserDbContext : IdentityDbContext<GuidUser, GuidRole, Guid, GuidUserLogin, GuidUserRole, GuidUserClaim>
{
public GuidUserDbContext(string connection)
: base(connection)
{
Database.SetInitializer(new GuidUserDbContextInitialilser());
}
}
public class GuidUserDbContextInitialilser : CreateDatabaseIfNotExists<GuidUserDbContext>
{
}
public class GuidUserManager : UserManager<GuidUser, Guid>
{
public GuidUserManager(GuidUserStore userStore)
: base(userStore)
{
}
}
public class GuidUserLogin : IdentityUserLogin<Guid>
{
}
public class GuidUserRole : IdentityUserRole<Guid>
{
}
public class GuidUserClaim : IdentityUserClaim<Guid>
{
}
public class GuidRole : IdentityRole<Guid, GuidUserRole>
{
}
public class GuidUserStore : UserStore<GuidUser, GuidRole, Guid, GuidUserLogin, GuidUserRole, GuidUserClaim>
{
public GuidUserStore(DbContext context)
: base(context)
{
}
}
public class GuidRoleStore : RoleStore<GuidRole, Guid, GuidUserRole>
{
public GuidRoleStore(DbContext context)
: base(context)
{
}
}
public class GuidUser : IdentityUser<Guid, GuidUserLogin, GuidUserRole, GuidUserClaim>
{
}
}
実際には必須ではありません。たぶん彼は自分のIoCコンテナにGuidUserManagerを登録しており、その場合コンストラクタに注入されるでしょう。 –