标签: asp.net-identity

将ASP.NET Identity模型移动到类库

我正在尝试使用此链接中的方法将Identity模型移动到类库:

服务库中的ASP.NET标识

问题1:似乎继续使用Website项目的连接字符串.我通过在类库中指定完整的连接字符串来克服它.我可以使IdentityDbContext使用类库的连接字符串吗?

问题2:由于问题1,如果我从网站项目中删除实体框架.它会给出以下错误:它正在网站项目中寻找EF的SqlClient.

EntityFramework.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

附加信息:没有为ADO.NET提供程序找到具有不变名称"System.Data.SqlClient"的实体框架提供程序.确保提供程序已在应用程序配置文件的"entityFramework"部分中注册.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882.

其他解决方案是受欢迎的,只要它省略了网站项目中的所有数据访问层引用,如EF.

.net c# asp.net entity-framework asp.net-identity

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

如何在MVC应用程序中使用JWT进行身份验证和授权?

我计划在ASP.NET MVC应用程序中使用ASP.NET Identity 2.0进行身份验证和授权.

参考以下链接

使用Owin的ASP.NET Web API 2中的JSON Web Token

我能够为有效用户创建访问令牌(JWT),即,当用户登录到应用程序时,我将使用名称和密码验证用户,然后我将为该有效用户发出JSON Web令牌.

现在,我在一些文章中读到,我们需要在标头中为每个请求传递承载令牌,以验证用户的身份验证.在MVC中,我们将为需要保护的方法提供Authorize属性,如下所示...

      public class UserController : BaseHRAppController
      {
            [Authorize]
            public ActionResult Index()
            {          
               return View();
            }
       }
Run Code Online (Sandbox Code Playgroud)

如何告诉我的MVC应用程序使用JWT验证用户?

每当用户尝试使用authorize属性访问该方法时,我想让我的MVC应用程序使用JWT验证用户.由于我将在许多页面中使用AJAX调用来访问MVC控制器中存在的方法,因此我认为在每个AJAX请求上传递令牌都不合适.我需要帮助以在MVC应用程序中使用ASP.NET标识以有效的方式完成身份验证和授权.

目前,我不知道如何在MVC应用程序中使用此JWT令牌进行身份验证和授权.

c# authentication authorization asp.net-mvc-4 asp.net-identity

40
推荐指数
2
解决办法
5万
查看次数

ASP.NET身份,需要"强"密码

也许今天早上我的googlin技能不是很好,但我似乎无法找到如何使用个人用户帐户使用新的asp.net mvc5项目设置不同的密码要求(而不是最小/最大长度).

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)

我不知道我想要做什么密码要求,但可能是最小长度和需要一个小写,大写字母和数字的组合.

知道我怎么能做到这一点(最好是通过模型属性)?

c# asp.net asp.net-mvc asp.net-identity

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

如何将我的Autofac容器插入ASP.NET Identity 2.1

我一直在研究新版ASP.NET Identity 2.1的新功能,其中一项增强功能是集成到OWIN中间件中的新IoC功能.我在这些例子中看到的一句话是这一句:

app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
Run Code Online (Sandbox Code Playgroud)

这句话接收一个函数委托,它返回示例中提供的管理器实现的新实例:

 public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options,
        IOwinContext context)
    {
        var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); 
Run Code Online (Sandbox Code Playgroud)

我个人不喜欢这个实现,因为我无法使用容器为这些管理器注入任何我想要的依赖项.

还有一个"神奇地""IdentityFactoryOptions"和"IOwinContext"被"神奇地"注入到我无法进入我的IoC容器的函数中.

有没有人对此实施有更好的解决方法?

asp.net asp.net-mvc owin asp.net-identity

39
推荐指数
2
解决办法
1万
查看次数

使用Windows域帐户和应用程序管理的帐户

创建一个基于Windows域用户进行身份验证的ASP.NET MVC应用程序很容易.创建一个使用Entity Framework存储的个人帐户也很容易.事实上,两者都有项目模板.

但我想利用BOTH各种认证在同一应用程序.我试图结合两个项目模板的代码.我在Startup.Auth.cs中遇到问题.

// from "Individual Accounts" template
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});
Run Code Online (Sandbox Code Playgroud)

中间件中存在cookie身份验证似乎导致域身份变为未经身份验证.如果我采用此行,域身份验证将起作用.但没有它,我似乎无法支持个人用户帐户.

我已经下载了katana项目源代码并检查了CookieAuthenticationHandler.cs,但我不太明白它是如何在OWIN管道的上下文中工作的.

如何使用ASP.net身份框架允许我的应用程序从Windows域或特定于应用程序的用户存储中验证用户?

c# asp.net-mvc claims-based-identity asp.net-mvc-5 asp.net-identity

39
推荐指数
2
解决办法
1993
查看次数

配置授权服务器端点

我们如何使用用户名和密码流在ASP.NET 5中使用持票令牌?对于我们的场景,我们希望让用户使用AJAX调用进行注册和登录,而无需使用外部登录.

为此,我们需要一个授权服务器端点.在以前的ASP.NET版本中,我们将执行以下操作,然后在ourdomain.com/TokenURL上登录.

// Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14)
};
Run Code Online (Sandbox Code Playgroud)

但是,在当前版本的ASP.NET中,上述操作无效.我们一直试图找出新的方法.例如,GitHub上的aspnet/identity示例配置了Facebook,Google和Twitter身份验证,但似乎没有配置非外部OAuth授权服务器端点,除非这样AddDefaultTokenProviders()做,在这种情况下我们想知道到底是什么URL提供者会.

研究

我们从阅读源代码中了解到,我们可以通过调用IAppBuilder.UseOAuthBearerAuthentication我们的Startup类来向HTTP管道添加"承载认证中间件" .虽然我们仍然不确定如何设置其令牌端点,但这是一个良好的开端.这不起作用:

public void Configure(IApplicationBuilder app)
{  
    app.UseOAuthBearerAuthentication(options =>
    {
        options.MetadataAddress = "meta";
    });

    // if this isn't here, we just get a 404
    app.Run(async context =>
    {
        await context.Response.WriteAsync("Hello …
Run Code Online (Sandbox Code Playgroud)

c# asp.net oauth asp.net-identity asp.net-core

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

将用户添加到角色ASP.NET标识

我知道新会员包括"简单角色提供者".

在创建用户时,我找不到与创建用户和分配角色相关的任何帮助.我添加了一个用户,它正确地在DB上创建了表.我看到了AspNetRoles,AspNetUserRolesAspNetUsers表.

我想要将角色分配给AspNetRoles用户,在AspNetUsers该用户中,角色/用户的ID将存储在AspNetUserRoles中.

当我创建用户时,我坚持编程部分的位置以及如何执行此操作.

我有一个下拉列表来选择角色,但是使用Entity CF和新的ASP.NET Identity模型我不知道如何从下拉列表中获取selectedvalue的ID和UserID并分配角色.

asp.net asp.net-roles asp.net-identity

34
推荐指数
4
解决办法
9万
查看次数

EmailConfirmed为false时阻止登录

最新的ASP.NET身份位(2.0 beta)包含确认用户电子邮件地址的基础.NuGet包"Microsoft Asp.Net Identity Samples"包含显示此流程的示例.但在该示例中,即使EmailConfirmed = false在用户体验中也没有不同的行为.

如何在用户尚未确认电子邮件地址时阻止用户登录?我知道我可以让用户登录,然后执行对该EmailConfirmed字段的检查,但是如果我可以阻止用户成功登录时效果会更好EmailConfirmed == false

c# asp.net-mvc asp.net-identity

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

在ASPNET标识2.0中禁用用户

我正在寻找一种方法来禁用用户而不是从系统中删除它们,这是为了保持相关数据的数据完整性.但似乎ASPNET身份只提供删除帐户.

有一个新的锁定功能,但似乎可以控制锁定以禁用用户,但只有在尝试了一定数量的错误密码后才能锁定用户.

还有其他选择吗?

asp.net asp.net-identity

34
推荐指数
7
解决办法
3万
查看次数

具有存储库和工作单元的ASP.NET标识

我正在使用Entity Framework 6学习ASP.NET MVC 5应用程序中的存储库和工作单元模式.

我已经阅读了很多教程和文章,但几乎所有教程和文章都是相同的.其他人说,存储库和工作单元模式是好的,其他人说DbContext已经是一个存储库和工作单元,其他人说类似的东西,但提供了一种完全不同的方法.我尝试了所有这些不同的方法(好吧,也许不是全部)并且仍然在努力确定哪种方法是最正确的方法.

我现在拥有的是:

  • 实现IRepository的IRepository和GenericRepository
  • IUnitOfWork和UnitOfWork实现IUnitOfWork
  • IDbContext和MyDbContext继承自IdentityDbContext并实现IDbContext

不确定我是否需要粘贴它的代码,我认为这是非常通用的,问题实际上不是Repository/UnitOfWork.我遇到的问题是将ASP.NET Identity类与我的存储库和工作单元结合使用.我正在为成员资格和所有其他数据共享相同的数据库 - 我认为这是一种常见的情况.我找不到好的解决方案如何使用我的存储库实例化ASP.NET Identity类.

UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(_DBCONTEXT_);
this.UserManager = new UserManager<ApplicationUser>(store);
Run Code Online (Sandbox Code Playgroud)

我应该用什么代替DBCONTEXT,以便它与我的UnitOfWork共享相同的DbContext?或者如何以其他方式完成使ASP.NET身份与UnitOfWork一起工作?

我尝试将DbContext暴露为UnitOfWork类的公共属性,如:

UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(this.unitOfWork.MyDbContext);
Run Code Online (Sandbox Code Playgroud)

但是我不认为它是正确的 - 它不适用于自定义IDbContext接口,并使代码不适合单元测试.

我也试图实现CustomUserStore和CustomRoleStore - 通常它可以工作,但是当我测试它时,它需要实现越来越多的方法.这个解决方案看起来太复杂了 - 我真的希望应该有更简单的方法.

c# entity-framework unit-of-work repository-pattern asp.net-identity

34
推荐指数
4
解决办法
2万
查看次数