小编sig*_*urd的帖子

如何使用代码首次迁移创建数据库?

我正在使用ASP.NET MVC 3项目,它使用Entity Framwork 4.3及其迁移.现在我希望Entity Framework使用我已经进行的迁移为我创建数据库.当我尝试运行Update-Database脚本时,它给出了以下内容:

Update-Database -Verbose -ProjectName AssemblyWithMigrations -StartUpProjectName WebProjectAssembly No migrations configuration type was found in the assembly '/* my name of assembly */'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).

但是,当我试图运行时,Enable-Migrations我看到以下内容:

Migrations have already been enabled in project 'AssemblyWithMigrations '. To overwrite the existing migrations configuration, use the -Force parameter.

因此,问题是EF尝试解析当前迁移版本以更新数据库,我想.但数据库不存在,显然失败了.

问题是:如果不存在,如何使用EF迁移创建数据库?或者,使用Nuget控制台做到这一点的正确方法是什么?

总之,我想要的:1.运行命令(也许update-database)将使用我的web.config文件创建数据库2.所有迁移将按创建顺序应用于创建的数据库.

谢谢.:)

entity-framework ef-migrations entity-framework-4.3

20
推荐指数
2
解决办法
3万
查看次数

N次登录尝试失败后如何显示验证码?

我有一个ASP.NET MVC 5应用程序,它使用ASP.NET Identity 2.0进行用户身份验证.

目前,用户在每次登录尝试时都被迫输入验证码,但它会引起许多关于验证复杂性的抱怨.

主要目标是使人尽可能简单地登录,并使尽可能复杂的机器人.

我决定在一定数量的失败登录尝试后显示验证码.关于它有很多 已经 被问到的 问题,但我没有找到能够帮助我构建相当完整的解决方案的答案.我发现这个问题,关于跟踪失败的尝试,但它也使用了锁定,这是不是我想要的.根据这个答案,旧的ASP.NET成员资格提供程序中提供了所需功能的一部分,并且在ASP.NET身份中不可用(但是?).

所以,我最终得到了以下简化算法:

  1. 如果提供的登录名和密码对正确,则登录用户.
  2. 如果登录名或密码不正确,则记录失败的登录尝试.
  3. 如果记录了三次用户登录尝试失败,则显示带有验证码的登录页面.
  4. 如果输入的验证码有效,则刷新失败的登录尝试次数,然后转到1.
  5. 如果输入的验证码无效,则再次显示带验证码的登录页面.

问题是:如何将传入请求区分为特定登录请求?

我不能依赖cookie,会话,IP等,因为任何机器人都可以改变它们.我也不能依赖登录,因为登录可能不完全存在.显而易见的方法是创建一个单独的表来存储登录,失败的尝试次数和时间戳,但机器人可以使用假登录轻松地将其充满,尽管我可以通过删除schedlued作业中的旧条目来解决此问题.

是有效的解决方案吗?有没有更好的方法呢?

security asp.net-mvc captcha asp.net-identity-2

7
推荐指数
1
解决办法
2881
查看次数