Я новичок в ASP.NET Identity, создал простой процесс входа и зарегистрировал делегатов в методе конфигурации IdentityConfig
моего проекта.
Я пытаюсь зарегистрировать их, но *Классы 1004 * и RoleManager
не распознают метод Create
.
public class IdentityConfig
{
public void Configuration(IAppBuilder app)
{
app.CreatePerOwinContext<UserManager<AppUsers>>(UserManager<AppUsers>.Create);
app.CreatePerOwinContext<RoleManager<AppRole>>(RoleManager<AppRole>.Create);
app.CreatePerOwinContext(() => new UsersPhonesDBContext());
app.CreatePerOwinContext<RoleManager<AppRole>>((options, context) =>
new RoleManager<AppRole>(
new RoleStore<AppRole>(context.Get<UsersPhonesDBContext>())));
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Home/Login"),
});
}
}
Метод входа:
public ActionResult Login()
{
var userManager = HttpContext.GetOwinContext().GetUserManager<UserManager<AppUsers>>();
var roleManager = HttpContext.GetOwinContext().GetUserManager<RoleManager<AppRole>>();
var authManager = HttpContext.GetOwinContext().Authentication;
AppUsers user = userManager.FindByName("MyName");
if (user != null)
{
var ident = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
//use the instance that has been created.
authManager.SignIn(
new AuthenticationProperties { IsPersistent = false }, ident);
return Redirect(Url.Action("Index", "Rest"));
}
// AppUsers user= userManager.Find("Hunain","");
return View();
}
Обновление:
Я написал класс AppUserManager и метод внутри него:
public class AppUserManager: UserManager<AppUsers>
{
public AppUserManager(IUserStore<AppUsers> store): base(store)
{
}
// this method is called by Owin therefore best place to configure your User Manager
public static AppUserManager Create(
IdentityFactoryOptions<AppUserManager> options, IOwinContext context)
{
var manager = new AppUserManager(
new UserStore<AppUsers>(context.Get<UsersPhonesDBContext>()));
// optionally configure your manager
// ...
return manager;
}
}
Still
var manager = new AppUserManager(
new UserStore<AppUsers>(context.Get<UsersPhonesDBContext>()
выдает ошибку.
Значение не может быть нулевым.
My DB context class:
public class UsersPhonesDBContext: IdentityDbContext<AppUsers>
{
public UsersPhonesDBContext()
: base("UsersPhonesDBContext")
{
Database.SetInitializer<UsersPhonesDBContext>(null);
}
public DbSet<Users> PhoneUsers { get; set; }
public DbSet<Phones> Phones { get; set; }
public DbSet<Sims> Sims { get; set; }
}