如何在.net Core中创建这样的owin上下文,以便可以使用用户和角色管理器?
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
//app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
}
并在Controller中使用,如
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
private ApplicationRoleManager _roleManager;
public UsersAdminController()
{
}
public UsersAdminController(ApplicationUserManager userManager, ApplicationSignInManager signInManager, ApplicationRoleManager roleManager)
{
UserManager = userManager;
SignInManager = signInManager;
RoleManager = roleManager;
}
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
}
private set
{
_signInManager = value;
}
}
public ApplicationUserManager UserManager
{
get
{
//GetOwinContext is not available in .Net Core
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
public ApplicationRoleManager RoleManager
{
get
{
return _roleManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationRoleManager>();
}
private set
{
_roleManager = value;
}
}
我尝试过this,但没有得到想要的结果。
这是ASP.NET MVC 5的代码,不是核心。尽管两个名称中都有“ ASP.NET”,但它们都是完全不同的框架。
在Core中,诸如UserManager<TUser>
之类的服务是请求范围的,其功能与“每个OWIN上下文”相同。但是,身份在ASP.NET Core中有所不同,因此ApplicationSignInManager
之类的内容不再适用。您需要参考文档并实现auth,因为它应该在ASP.NET Core中完成。