标签: asp.net-identity

将用户添加到角色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万
查看次数

Asp.net身份密码哈希

新的ASP.net Identity项目为网站安全带来了一些有用的代码和接口.要使用接口实现自定义系统(而不是使用MVC 5模板中包含的标准Entity Framework实现),IPasswordHasher则需要使用.

IPasswordHasher ASP.net身份中的接口

namespace Microsoft.AspNet.Identity
{
    public interface IPasswordHasher
    {
         string HashPassword(string password);
         PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword);
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用密码salting在ASP.net身份中通过此接口进行更安全的加密?

asp.net security identity asp.net-identity

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

为什么来自一个站点的ASP.NET身份登录与同一台计算机上的不同网站共享?

我创建了一个全新的Web应用程序,说"WebApplication1" - 将身份验证设置为个人用户帐户的WebForms.我没有向自动生成的代码模板添加一行代码.我运行应用程序并注册用户"User1"并登录 - 工作正常.

现在我创建另一个Web应用程序"WebApplication2" - 将身份验证设置为单个用户帐户的相同WebForms.再次没有代码,我运行应用程序.现在我创建另一个用户说"User2" - 工作正常.

当两个应用程序同时运行时,问题就开始了.如果我以"User1"身份登录到第一个站点,那么当它甚至没有注册"User1"时,它会自动将第二个站点的Context.User.Identity从"webApplication2"设置为"User1",反之亦然从一个站点出来,另一个站点退出.

如何共享Context.User.Identity?

代码是一样的 -

public static void SignIn(UserManager manager, ApplicationUser user, bool isPersistent){  

      IAuthenticationManager authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
        authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);

        var identity = manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
        authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
    }
Run Code Online (Sandbox Code Playgroud)

我肯定错过了一些关于ASP.Net Identity如何工作的基本知识,所以请帮助我.

提前致谢.

asp.net-identity

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

ASP.NET MVC 5如何在Identity 2.0中删除用户及其相关数据

嗨,我正在关注本文以删除Identity 2.0中的用户 http://www.asp.net/mvc/tutorials/mvc-5/introduction/examining-the-details-and-delete-methods

但是,我需要先删除AspNetUserRoles中的所有相关记录,然后删除该用户.

我找到了一个用Identity 1.0编写的例子,这个例子中使用的一些方法不存在.

   // POST: /Users/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> DeleteConfirmed(string id)
        {
            if (ModelState.IsValid)
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }

                var user = await context.Users.FindAsync(id);
                var logins = user.Logins;
                foreach (var login in logins)
                {
                    context.UserLogins.Remove(login);
                }
                var rolesForUser = await IdentityManager.Roles.GetRolesForUserAsync(id, CancellationToken.None);
                if (rolesForUser.Count() > 0)
                {

                    foreach (var item in rolesForUser)
                    {
                        var result = await IdentityManager.Roles.RemoveUserFromRoleAsync(user.Id, item.Id, CancellationToken.None);
                    }
                }
                context.Users.Remove(user);
                await context.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            else …
Run Code Online (Sandbox Code Playgroud)

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

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

如何使用ASP.NET身份(OWIN)访问Facebook私人信息?

我正在ASP.NET MVC 5中开发一个网站(目前使用RC1版本).该网站将使用Facebook进行用户身份验证和检索初始个人资料数据.

对于身份验证系统,我使用的是基于OWIN的新ASP.NET身份引擎(http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc -5.aspx),因为它极大地简化了与外部提供商进行身份验证的过程.

问题是,一旦用户首次登录,我想从Facebook个人资料中获取其电子邮件地址,但此数据不包含在生成的声明中.所以我考虑过这些替代方案来获取地址:

  1. 指示ASP.NET标识引擎将电子邮件地址包含在从Facebook检索的数据集中,然后转换为声明.我不知道这是否可行.

  2. 使用Facebook图形API(https://developers.facebook.com/docs/getting-started/graphapi)通过使用Facebook用户ID(包含在声明数据中)来检索电子邮件地址.但是,如果用户将其电子邮件地址设置为私有,则此操作无效.

  3. 使用Facebook图形API,但指定"我"而不是Facebook用户ID(https://developers.facebook.com/docs/reference/api/user).但是需要一个访问令牌,我不知道如何(或者根本不可能)检索ASP.NET用来获取用户数据的访问令牌.

所以问题是:

  1. 如何指示ASP.NET标识引擎从Facebook检索其他信息并将其包含在声明数据中?

  2. 或者,我如何检索生成的访问令牌,以便我自己可以询问Facebook?

谢谢!

注意:对于身份验证系统,我的应用程序使用基于此SO答案中链接的示例项目的代码:https://stackoverflow.com/a/18423474/4574

asp.net-mvc facebook-graph-api owin asp.net-mvc-5 asp.net-identity

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

使用MVC 5和Asp.net身份进行电子邮件确认

我一直在搜索,但没有找到任何关于如何使用新的ASP.net身份实现MVC 5的电子邮件确认的文档.似乎没有关于这个主题的任何文档(我可以找到).

有人解决了这个吗?我很惊讶默认情况下默认情况下不会包含在默认的MVC 5项目中.

非常感谢任何指导.

谢谢

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

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

将ActiveDirectory授权与ASP.NET标识一起使用

我正在使用asp.net mvc实现企业网站,并希望使用新的ASP.NET身份框架.是否可以将ActiveDirectory授权与ASP.NET标识集成?任何样品怎么做?

asp.net active-directory asp.net-mvc-5 asp.net-identity

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