标签: asp.net-identity

模拟新的Microsoft Entity Framework Identity UserManager和RoleManager

有没有人想出了一个成功的嘲弄解决方案UserManagerRoleManager?我整天都在靠墙打我的头.我想要做的就是模拟对象以使用内存集合而不是命中Entity Framework数据存储.我已经浏览了互联网并尝试了几种使用MOQ的不同方法.

我的印象是新东西更容易测试.我错过了什么吗?

c# unit-testing entity-framework moq asp.net-identity

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

解耦ASP.NET MVC 5 Identity以允许实现分层应用程序

我是ASP.NET MVC的新手,我一直在开发一个带有个人用户身份验证的MVC 5应用程序.在做我的应用程序时,我一直在做分层模式,比如分离模型层,DAL层,Repos等等.但是现在在MVC 5中,我希望能够使用他们称之为Identity的用户和角色管理和身份验证,然后仍然有我的应用程序的分层结构,因为现在似乎Identity与MVC项目本身,其中的用户和角色模型以及上下文相结合.

我现在在我的应用程序中所做的是我在MVC项目(在单独的文件夹中)中拥有所有我应该要分离的层,如我的DAL,UnitOfWork,Repos,其他模型等,只是为了使它工作,现在.我知道这不是正确的做法.

所以,任何人都可以向我指出一些关于这个的好例子或文章,或者直接解释它是否可能以及如何?Google对此并不友好.谢谢!

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

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

"使用ASP.NET标识创建模型时不能使用上下文"

当我们调用AccountApiController.Register()方法时,为什么会发生这种情况?

  • 什么是尝试使用上下文?
  • 什么是尝试创建上下文?
  • 我们该如何避免这种情况?
  • 我们如何调试这个?

"消息":"发生错误.",

"ExceptionMessage":"在创建模型时不能使用上下文.如果在OnModelCreating方法中使用上下文,或者同时由多个线程访问相同的上下文实例,则可能抛出此异常.请注意DbContext的实例成员和相关的类不保证是线程安全的.",

"ExceptionType": "System.InvalidOperationException"

"堆栈跟踪":"

在System.Web.Http.ApiController.d__1.MoveNext()

---从抛出异常的先前位置开始的堆栈跟踪结束

在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)

在System.Runtime.CompilerServices.TaskAwaiter .HandleNonSuccessAndDebuggerNotification(任务>任务)

在System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()"

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

43
推荐指数
2
解决办法
9万
查看次数

如何覆盖ASP.NET Core Identity的密码策略

默认情况下,ASP.NET Core Identity的密码策略至少需要一个特殊字符,一个大写字母,一个数字,......

我该如何更改此限制?

文档中没有任何内容(https://docs.asp.net/en/latest/security/authentication/identity.html)

我尝试覆盖Identity的用户管理器,但我没有看到哪个方法管理密码策略.

public class ApplicationUserManager : UserManager<ApplicationUser>
{
    public ApplicationUserManager(
        DbContextOptions<SecurityDbContext> options,
        IServiceProvider services,
        IHttpContextAccessor contextAccessor,
        ILogger<UserManager<ApplicationUser>> logger)
        : base(
              new UserStore<ApplicationUser>(new SecurityDbContext(contextAccessor)),
              new CustomOptions(),
              new PasswordHasher<ApplicationUser>(),
              new UserValidator<ApplicationUser>[] { new UserValidator<ApplicationUser>() },
              new PasswordValidator[] { new PasswordValidator() },
              new UpperInvariantLookupNormalizer(),
              new IdentityErrorDescriber(),
              services,
              logger
            // , contextAccessor
              )
    {
    }

    public class PasswordValidator : IPasswordValidator<ApplicationUser>
    {
        public Task<IdentityResult> ValidateAsync(UserManager<ApplicationUser> manager, ApplicationUser user, string password)
        {
            return Task.Run(() =>
            {
                if (password.Length >= 4) …
Run Code Online (Sandbox Code Playgroud)

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

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

获取Asp.Net MVC 5中登录用户的UserID

我是ASP.Net MVC的新手,现在尝试使用内置的用户登录功能.我可以在注册视图中注册用户.如果我尝试使用创建的用户登录,这也有效.我被重定向到母版页.

但是我无法获得当前用户的UserID.我在HomeController和AccountController中尝试了我的代码,但两者都没有用.第一行中的语句返回null.

var userID = User.Identity.GetUserId();

if (!string.IsNullOrEmpty(userID))
{
    var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(ApplicationDbContext.Create()));
    var currentUser = manager.FindById(User.Identity.GetUserId());
}
Run Code Online (Sandbox Code Playgroud)

在获取UserID之前,我是否需要做其他事情?

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

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

如何从ASP.NET身份获取用户列表?

编辑:这个问题已经过时了

在我问这个时,身份框架是一个移动目标.作者改变了很多东西,他们将几件事分开,使事情变得更容易.

看看github上的Asp.NET Identity Sample项目.


我正在创建一个需要用户管理的小应用程序.不允许注册,而是有超级用户将创建和修改登录信息.

我正在使用新的ASP.NET身份会员系统,当然,创建用户和添加角色非常简单直观.

现在,我的问题:如何使用生成的AccountController类使用的AuthenticationIdentityManager类获取用户列表?我找不到从我的控制器访问用户列表的方法.

(顺便说一句,新名称"身份"对某些人来说可能听起来很棒,但搜索却很痛苦.)

编辑:如果我尝试这样做

ApplicationDbContext UsersContext = new ApplicationDbContext();
UsersContext.Users.ToList(); // Exception
Run Code Online (Sandbox Code Playgroud)

我得到一个例外Invalid column name 'Discriminator'.ApplicationDbContext的定义由新的应用程序向导自动生成:

using Microsoft.AspNet.Identity.EntityFramework;

namespace Cobranzas.Models
{
    public class ApplicationUser : User
    {

    }
    public class ApplicationDbContext : IdentityDbContextWithCustomUser<ApplicationUser>
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的猜测是,Discriminator列告诉分开ApplicationUserUser.但是,它在我的数据库中不存在(由应用程序自动创建).

asp.net asp.net-membership asp.net-mvc-5 asp.net-identity

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

跨子域的ASP.NET Identity Cookie

对于表单身份验证,我在web.config中使用了它(请注意域属性):

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

如何在Mvc 5中为新的ASP.NET Identity Framework配置子域之间的单点登录?

更多信息:

我正在创建一个多租户应用程序.每个客户端都在子域上:

client1.myapp.com

client2.myapp.com

我希望用户能够登录client1.myapp.com然后转到client2.myapp.com并仍然登录.使用表单身份验证很容易.我正在试图弄清楚如何使用新的Identity Framework来实现它.

编辑

这是最终为我工作的代码:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
  AuthenticationType = "Application",
  LoginPath = "/Account/Login",
  CookieDomain = ".myapp.com"
});
Run Code Online (Sandbox Code Playgroud)

c# authentication forms-authentication asp.net-identity

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

在ASP.NET标识中添加角色

如何在新的ASP.NET身份系统(1.0)中添加角色?有一个UserStore班级,但没有RoleStore班级.

我找不到关于这个问题的任何文件.

asp.net asp.net-identity

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

将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万
查看次数