我正在尝试在VS 2013预览中使用新的MVC5框架.
会员身份验证框架已经过彻底检查并替换为OWin.
特别是,我打开了外部身份验证提供程序Google auth.
这很简单.
只需取消注释这一行: app.UseGoogleAuthentication();在新的默认MVC项目的App_Start目录中的Startup.Auth.cs文件中.
因此,我希望访问来自身份验证提供程序的"额外数据",例如用户的头像的URL以显示在我的应用程序中.
在针对asp.net成员资格提供程序的旧OAuth实现下,有一种方法可以使用此处的ExtraData字典来捕获它:ProviderDetail.ExtraData属性.
我找不到关于OAuth和OWin如何协同工作以及如何访问这些额外数据的文档.
任何人都可以开导我吗?
asp.net-mvc owin visual-studio-2013 asp.net-mvc-5 asp.net-identity
在MVC4中,我们有简单会员资格.我的观点是,Simple Membership是一个很好的身份模型,经过良好的文档测试和测试,不需要修复,只需要在电子邮件验证/密码重置和我们通常必须处理的所有其他内容方面进行升级.构建应用程序.然而,新的ASP.NET身份模型似乎实现了Vista在XP上实现的某种程度.我的意思是AspnetUserClaims,AspnetLogins可能已经聚集在一起了UserAliases.微软应该为我的唠叨的电子邮件部分提供一些方法.刚刚根据可能欺骗我的问题的第一次看起来讨论了我的意见
我正在尝试决定是否应该从简单成员身份转移到新的 ASP.NET身份,但由于ASP.NET身份模型的文档和测试很稀疏,冲突且难以使用Google进行定位.那么有经验的人可以总结一下利弊吗?
asp.net-mvc asp.net-mvc-4 simplemembership asp.net-mvc-5 asp.net-identity
我已下载此示例,我可以在其中尝试ASP.NET MVC 5中的Identity Provider的功能:
http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples
我已经多次使用Unity DI来获取我的存储库,服务,工作单元和其他没有问题的东西.
但是现在,当我安装Unity DI时,我在使用身份提供程序的接口和DI上遇到了很多问题.
我刚刚下载了示例的代码并且我已经配置了Unity DI,但是我不想将Unity用于身份成员资格,我想使用Unity DI只是为了我的东西(IRepository,IService,IUnitOfWork等. )
我尝试注册用户时出现此错误:
当前类型Microsoft.AspNet.Identity.IUserStore`1 [Ecoavantis.Interactive.GCI.Models.ApplicationUser]是一个接口,无法构造.你错过了类型映射吗?
我读了一些帖子,其中他们说我必须包含这样的内容,但我不需要在Identity Provider中注入依赖项...
container.RegisterType<UserManager<ApplicationUser>>(new HierarchicalLifetimeManager());
container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
代码示例:
/// <summary>Registers the type mappings with the Unity container.</summary>
/// <param name="container">The unity container to configure.</param>
/// <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to
/// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks>
public static …Run Code Online (Sandbox Code Playgroud) 在MVC 5中使用新的ASP.net标识,我们如何禁止用户登录?我不想删除它们,也许只是在一段时间内禁用它们的帐户.
有没有人对此有任何想法,因为我没有在ASPNetUsers表上看到状态列或任何内容.
我有一个ASP .NET MVC5应用程序,我没有使用Windows身份验证.
一切都工作正常,直到我尝试在开发它的域之外运行应用程序,并且(无论出于何种原因)得到了:
The trust relationship between this workstation and the primary domain failed.
Run Code Online (Sandbox Code Playgroud)
当我想要做的时候User.IsInRole("Admin").
我使用自定义的Identity,Role,IdentityStore,RoleStore,等从.NET的Identity,我可以看到用户和角色数据被从(MongoDB的)数据库中检索正确.
关于这个问题有很多问题,但是他们来自想要使用Windows Auth的人.和模仿他们的MVC应用程序:
那么,SystemException如果我没有使用Active Directory并且(据我所知)没有做任何可能取决于PC域的事情,我为什么要得到这个呢?我错过了一些配置(在我的Web.config或IIS Express中)?
好的,所以缩小了一点......
我的User.IsInRole("Admin")行在if()我的_Layout.cshtml视图中的一个声明中(即,知道在导航栏中显示什么,取决于角色).
我现在知道在没有用户进行身份验证时我只得到上面的错误,而且我不在我用于dev的域中.如果我在该行上放置一个断点,我可以看到该User对象是a System.Security.Principal.WindowsIdentity,它的底层Identity是System.Security.Principal.WindowsIdentity.
另一方面,如果用户被认证,则User对象和ts Identity是System.Security.Claims.ClaimsPrincipal和System.Security.Claims.ClaimsIdentity.
为什么它根本使用Windows身份(未经身份验证时)以及如何禁用它?
我有一个列出角色的下拉列表框.我想获得具有该角色的用户列表.我的意思是"管理员"角色或"CanEdit"角色的用户列表.这是我的代码:
public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
GetRolesToUsers([Control] string ddlRole)
{
//ddlRole returns role Id, based on this Id I want to list users
var _db = new ApplicationDbContext();
IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;
if (ddlRole != null)
{
//query = query.Where(e => e.Claims == ddlRole.Value); ???????
}
return query;
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.
更新的代码(仍然错误)
public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{
var roleManager =
new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var users = roleManager.FindByName("Administrator").Users.ToList();
return users;
}
Run Code Online (Sandbox Code Playgroud)
错误:当ItemType设置为"Microsoft.AspNet.Identity.EntityFramework.IdentityUser"时,Select方法必须返回"IQueryable"或"IEnumerable"或"Microsoft.AspNet.Identity.EntityFramework.IdentityUser"之一.
我尝试了各种铸件,但没有一个帮助.
更新(工作解决方案)
感谢chris544,他的想法帮助我解决了这个问题.这是工作方法: -
public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
var context = …Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity asp.net-identity-2
整天都在这个问题上摸不着头脑.我正在尝试在MVC Identity 2.0.1中设置"非常长"的登录会话.(30天).
我使用以下cookie启动:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
SlidingExpiration = true,
ExpireTimeSpan = System.TimeSpan.FromDays(30),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/My/Login"),
CookieName = "MyLoginCookie",
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设置为30天,所有看起来都很好.
如果我关闭浏览器并在"validateInterval"持续时间过去之后回来(这里30分钟)我仍然登录,但是现在cookie仅作为"会话"重新发布(仍然是正确的cookie名称)!30天的到期消失了.
如果我现在关闭浏览器/再次重新打开,我将不再登录.
我已经测试了删除"提供者"并且所有工作都按预期进行,我可以在几个小时后回来并且我仍然可以正常登录.我读到最好使用邮票重新验证,所以我不确定如何继续.
我们希望使用Windows Active Directory对用户进行应用程序身份验证.但是,我们不希望使用Active Directory组来管理控制器/视图的授权.
据我所知,没有一种简单的方法可以将AD和基于身份的声明结合起来.
任何帮助都不仅仅是值得赞赏的.我已经坚持这个问题很长一段时间了,并且会对这个问题的外部投入表示赞赏.
authentication claims-based-identity asp.net-identity visual-studio-2015 asp.net-core
我正在编写MVC 5并使用Identity 2.0.
现在我想重置密码.但我总是收到重置密码令牌的"无效令牌"错误.
public class AccountController : Controller
{
public UserManager<ApplicationUser> UserManager { get; private set; }
public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
}
Run Code Online (Sandbox Code Playgroud)
我设置了DataProtectorTokenProvider,
public AccountController(UserManager<ApplicationUser> userManager)
{
//usermanager config
userManager.PasswordValidator = new PasswordValidator { RequiredLength = 5 };
userManager.EmailService = new IddaaWebSite.Controllers.MemberShip.MemberShipComponents.EmailService();
var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider();
userManager.UserTokenProvider = new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(provider.Create("UserToken"))
as IUserTokenProvider<ApplicationUser, string>;
UserManager = userManager;
}
Run Code Online (Sandbox Code Playgroud)
我在发送邮件之前生成密码重置
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ManagePassword(ManageUserViewModel model)
{
if (Request.Form["email"] != null)
{
var email = …Run Code Online (Sandbox Code Playgroud) 我是Asp.Net Identity的新手,如果这个问题看起来很愚蠢,请耐心等待.因此,当我在Microsoft网站上阅读下面链接中的UserStore类和UserManager类的定义时,看起来这两个类都定义了围绕用户的操作(如添加,查找,删除和修改).那么我何时使用一个而不是另一个?:
https://msdn.microsoft.com/en-us/library/dn315446(v=vs.108).aspx https://msdn.microsoft.com/en-us/library/dn613290(v=vs.108)的.aspx
asp.net-identity ×10
asp.net-mvc ×7
c# ×3
asp.net ×2
owin ×2
.net ×1
asp.net-core ×1
identity ×1