我知道新会员包括"简单角色提供者".
在创建用户时,我找不到与创建用户和分配角色相关的任何帮助.我添加了一个用户,它正确地在DB上创建了表.我看到了AspNetRoles,AspNetUserRoles和AspNetUsers表.
我想要将角色分配给AspNetRoles用户,在AspNetUsers该用户中,角色/用户的ID将存储在AspNetUserRoles中.
当我创建用户时,我坚持编程部分的位置以及如何执行此操作.
我有一个下拉列表来选择角色,但是使用Entity CF和新的ASP.NET Identity模型我不知道如何从下拉列表中获取selectedvalue的ID和UserID并分配角色.
最新的ASP.NET身份位(2.0 beta)包含确认用户电子邮件地址的基础.NuGet包"Microsoft Asp.Net Identity Samples"包含显示此流程的示例.但在该示例中,即使EmailConfirmed = false在用户体验中也没有不同的行为.
如何在用户尚未确认电子邮件地址时阻止用户登录?我知道我可以让用户登录,然后执行对该EmailConfirmed字段的检查,但是如果我可以阻止用户成功登录时效果会更好EmailConfirmed == false
我正在寻找一种方法来禁用用户而不是从系统中删除它们,这是为了保持相关数据的数据完整性.但似乎ASPNET身份只提供删除帐户.
有一个新的锁定功能,但似乎可以控制锁定以禁用用户,但只有在尝试了一定数量的错误密码后才能锁定用户.
还有其他选择吗?
我正在使用Entity Framework 6学习ASP.NET MVC 5应用程序中的存储库和工作单元模式.
我已经阅读了很多教程和文章,但几乎所有教程和文章都是相同的.其他人说,存储库和工作单元模式是好的,其他人说DbContext已经是一个存储库和工作单元,其他人说类似的东西,但提供了一种完全不同的方法.我尝试了所有这些不同的方法(好吧,也许不是全部)并且仍然在努力确定哪种方法是最正确的方法.
我现在拥有的是:
不确定我是否需要粘贴它的代码,我认为这是非常通用的,问题实际上不是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
新的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身份中通过此接口进行更安全的加密?
我创建了一个全新的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如何工作的基本知识,所以请帮助我.
提前致谢.
嗨,我正在关注本文以删除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 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个人资料中获取其电子邮件地址,但此数据不包含在生成的声明中.所以我考虑过这些替代方案来获取地址:
指示ASP.NET标识引擎将电子邮件地址包含在从Facebook检索的数据集中,然后转换为声明.我不知道这是否可行.
使用Facebook图形API(https://developers.facebook.com/docs/getting-started/graphapi)通过使用Facebook用户ID(包含在声明数据中)来检索电子邮件地址.但是,如果用户将其电子邮件地址设置为私有,则此操作无效.
使用Facebook图形API,但指定"我"而不是Facebook用户ID(https://developers.facebook.com/docs/reference/api/user).但是需要一个访问令牌,我不知道如何(或者根本不可能)检索ASP.NET用来获取用户数据的访问令牌.
所以问题是:
如何指示ASP.NET标识引擎从Facebook检索其他信息并将其包含在声明数据中?
或者,我如何检索生成的访问令牌,以便我自己可以询问Facebook?
谢谢!
注意:对于身份验证系统,我的应用程序使用基于此SO答案中链接的示例项目的代码:https://stackoverflow.com/a/18423474/4574
asp.net-mvc facebook-graph-api owin asp.net-mvc-5 asp.net-identity
我一直在搜索,但没有找到任何关于如何使用新的ASP.net身份实现MVC 5的电子邮件确认的文档.似乎没有关于这个主题的任何文档(我可以找到).
有人解决了这个吗?我很惊讶默认情况下默认情况下不会包含在默认的MVC 5项目中.
非常感谢任何指导.
谢谢
我正在使用asp.net mvc实现企业网站,并希望使用新的ASP.NET身份框架.是否可以将ActiveDirectory授权与ASP.NET标识集成?任何样品怎么做?
asp.net-identity ×10
asp.net ×5
asp.net-mvc ×4
c# ×3
identity ×1
owin ×1
security ×1
unit-of-work ×1