- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 asp.net mvc 5 与外部供应商 owin 提供(facebook,twitter)
ApplicationUserManager.Create 在每次请求时被调用。那里有很多登录用户不必要的东西(密码验证器配置或短信和电子邮件服务配置....)
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = true,
RequireUniqueEmail = true
};
// Configure validation logic for passwords
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 7,
RequireNonLetterOrDigit = false,
RequireDigit = true,
RequireLowercase = true,
RequireUppercase = true,
};
...
另外,我觉得跟这个有关系
public partial class Startup
{
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);
...
我该怎么做才能让这个“创建”只在需要时被调用。我不想在不需要时实例化密码验证器和其他东西
谢谢
最佳答案
不确定这是否仍然打开,但是...我也不喜欢每次调用 ApplicationUserManager 的方式,所以我决定将其更改为单例。
对象的dispose方法会被自动调用,除非你在传入create的时候也传入一个析构函数回调。
所以我的 ApplicationUserManager 现在看起来像这样:
public class ApplicationUserManager : UserManager<SmartUser, Guid>
{
//This manager seems to get re-created on every call! So rather keep a singleton...
private static ApplicationUserManager _userManager;
private ApplicationUserManager(IUserStore<SmartUser, Guid> store)
: base(store)
{
}
internal static void Destroy(IdentityFactoryOptions<ApplicationUserManager> options, ApplicationUserManager manager)
{
//We don't ever want to destroy our singleton - so just ignore
}
internal static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
if (_userManager == null)
{
lock (typeof(ApplicationUserManager))
{
if (_userManager == null)
_userManager = CreateManager(options, context);
}
}
return _userManager;
}
private static ApplicationUserManager CreateManager(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
... your existing Create code ...
}
}
在 Startup.Auth 中,我传入了 Destroy 回调
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create, ApplicationUserManager.Destroy);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
另一种选择是忽略“每个请求调用的注册代码”并使 UserStore 成为单例....
尚未发现这种强硬方法的缺点...
关于c# - ApplicationUserManager.Create 在每个请求上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764891/
我不喜欢 Identity 的一件事是 UserManagers 必须在您希望为其获取用户信息的 Controller 中实例化。在我的项目中,我将所有业务逻辑移到了 DAL 类库中,并且希望身份也在
我正在尝试配置 Autofac 以与我的 Web API/Oauth Identity 项目配合使用,但它似乎不起作用。我不断收到“无法解析构造函数上的参数 ApplicationUserManage
我正在使用 asp.net mvc 5 与外部供应商 owin 提供(facebook,twitter) ApplicationUserManager.Create 在每次请求时被调用。那里有很多登录
我有 ApplicationUserManager定义如下: public class ApplicationUserManager : UserManager { publi
我已尽我所能关注 Rick Anderson 的以下文章: MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on 我
我正在尝试模拟 ApplicationUserManager.Users 以便我可以测试 Controller 方法。我的 Controller 是 public class ManageContro
我已将 SignalR 添加到我现有的 MVC 项目中,并尝试使用来自 MVC 的相同 ApplicationUserManager 将用户加载到中心上下文中。 连接完成后,我像这样调用一些服务器方法
我创建了一个名为 ProfileContoller 的 Controller 在我的申请中。在这个 Controller 中,我需要创建一个 ApplicationUserManager 的实例。但是
我在 MVC4 应用程序中使用 nInject。我想实现我自己的 ApplicationUserManager 版本,因为脚手架创建了一个单独的数据库上下文实例(我使用 nInject 将请求范围数据
在新的 ASPNET MVC 应用程序中,您现在可以免费获得 AspIdentity 好东西。 有一条无害的小线路“在此处插入您的电子邮件服务”。 所以我做了: public class EmailS
我有以下通用 webApi2 AccountController:- private const string LocalLoginProvider = "Local"; privat
如何删除 Identity core3 Preview4 中的任何 ILookupNormalizer 注入(inject)? 我使用 Identity 2.2,无法在 ApplicationUser
我正在尝试为 AccountController 的 Register 方法编写单元测试 我正在使用最小起订量,从单元测试中模拟 ApplicationUserManager、ApplicationR
你好, 我正在研究 ASP.NET 身份源,特别是在 UserValidator 中.我想为我自己的项目重写它,以便能够更改错误消息。所以我将该类复制到我的项目中。当我尝试使用它时 - 我收到错误 -
我在我的项目中使用 asp.net 身份,并使用 Structuremap 作为 DI 框架。问题是当我使用构造函数注入(inject)时,ApplicationUserManager 没有配置它的所
我正在使用 ASP.Net Identity,并希望按照本文将 ApplicationUserManager 服务添加到我的所有自定义 Controller :How to plug my Autof
我是一名优秀的程序员,十分优秀!