我是ASP.NET的新手,目前正在学习ASP.NET身份。 我知道它是build立在微软OWIN实施之上的,我也正在学习。 所以,我遇到了Owin启动代码中的扩展方法CreatePerOwinContext,我没有看到使用它的明确目的。 它是一种dependency injection容器吗? 这个方法的真正目的是什么? 在什么情况下应该适用?
我有一个与system.web.http.owin版本号问题。 所以我把它从我的项目包引用中删除了,我想重新添加它来查看它是否解决了问题。 但是它已经完全消失了。 即如果我去视觉工作室: 解决scheme资源pipe理器> myProject>引用> RMC>添加引用> 然后searchsystem.web.http.owin它不会出现。 任何想法出了什么问题,或者我需要安装哪些软件包才能重新出现。 我原来的错误信息… Error 7 Assembly'System.Web.Http.Owin,Version = 5.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'using'System.Web.Http,Version = 5.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'which has版本= 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'e:\ user \ project1 \ src \ packages \ Microsoft.AspNet.WebApi.Owin.5.1.1 \ lib \ net45 \ System.Web.Http.Owin.dll Smots.Core
(使用VS2013 RTW,ASP.NET MVC5) 我已经看到很多关于如何在使用ASP.NET标识时向ApplicationUser类(和表)添加属性的文档。 但是我还没有看到有关如何通过外键映射到ApplicationUser表的内容的单独表的任何文档。 我已经成功地派生了我自己的Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext,现在我自己的“UserPreferences”表与我的SQL Server数据库中的各种“AspNet *”表和谐共存。 但是我并不清楚获取当前用户ID的最佳方法,以便向“UserPreferences”表中写入新行。 请注意,该项目是ASP.NET MVC,但我已经添加(并正在工作)Web API控制器。 我有一个工作解决scheme,这是: var uman = new Microsoft.AspNet.Identity.UserManager<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>(new Microsoft.AspNet.Identity.EntityFramework.UserStore<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>(new App1.Data.App1DbContext())); var uident = User.Identity; var userobject = uman.FindByNameAsync(uident.Name); var userid = userobject.Result.Id; // (Perform new row creation including the userid we just looked up 考虑到AspNetUsers表(由Identity框架定义)由以下字段组成: -id (PK, nvarchar(128) – seems to contain a GUID, not […]
我使用Owin通过Google oAuth进行授权。 以下是我的cookie如何configuration: // Enable the application to use a cookie to store information for the signed in user app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Authentication/Login") }); // Use a cookie to temporarily store information about a user logging in with a third party login provider app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 所以我使用UseCookieAuthentication和UseExternalSignInCookie,它似乎是多余的。 我应该为IAuthenticationManager方法(SignIn,SingOUt等)指定这两个AuthenticationType中的哪一个? 或者我应该只保留其中一个? 更新。 最让我困惑的是SignIn方法: […]
道歉和感谢提前这个问题! 我还是新来的。 我一直在使用MVC5,EF6和VS 2013开发Web应用程序。 我花了一些时间升级到RC位,一旦释放。 感谢所有伟大的职位:例如。 解耦Microsoft.AspNet.Identity。*和更新asp.net MVC从5.0.0-beta2到5.0.0-rc1 ! 以我的无限智慧,我决定转移到@Hao Kung在这里发布的RTM位: 我怎样才能尽早访问即将到来的Asp.Net Identity更改? 。 我想我会省下麻烦,并且不会太落后于我们最终收到RTM版本。 这或者是一场噩梦,或者我完全错过了一些(或者两者兼有),因为我无法弄清楚一直在使用RC1的基本任务。 虽然好像我通过控制器( Asp.Net身份RTM版本中的Microsoft.AspNet.Identity.Owin.AuthenticationManager? )在日志logging用户…我的WindowsIdentity总是空的,没有authentication后,我打电话SignIn。 用户和claimsIdentity对象正确填充。 下面是我调用的操作方法(为了完整性,将属性移动到局部variables): [HttpPost, AllowAnonymous, ValidateAntiForgeryToken] public virtual async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { var userManager = new UserManager<EtdsUser>(new UserStore<EtdsUser>(new EtdsContext())); var user = userManager.Find(model.UserName, model.Password); if (user != null) { var authenticationManager […]
我在Web API 2中设置不记名令牌authentication,我不明白如何(或在哪里)不记名的令牌存储在服务器端。 这是相关的代码: 启动: public partial class Startup { public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; } public static Func<UserManager<IdentityUser>> UserManagerFactory { get; set; } public static string PublicClientId { get; private set; } static Startup() { PublicClientId = "self"; UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>()); OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath […]
我刚刚安装了Visual Studio 2013,创build了一个MVC Web应用程序项目,并在项目模板中注意到一个名为Startup.cs的新文件。 这是什么,这与Global.asax.cs有什么不同,有什么好的最佳实践来使用它?
在尝试启用OWIN&AspNet Identity到我的Web Api项目(在VS 2013 + .Net 4.5.1中)后,我在每个有效或无效(request to none exists控制器)请求中收到以下错误: <Error> <Message>An error has occurred.</Message> <ExceptionMessage> No OWIN authentication manager is associated with the request. </ExceptionMessage> <ExceptionType>System.InvalidOperationException</ExceptionType> <StackTrace> at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request) at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext() — End of stack trace from previous location where exception was thrown — at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at […]
我正在关注Microsoft示例,以便使用Identity 2.0.0实现电子邮件validation 我被困在这个部分 public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } private set { _userManager = value; } } 这在controller工作,但HttpContext不包含GetOwinContext中的任何GetOwinContext方法。 所以我尝试了HttpContext.Current.GetOwinContext()但GetUserManager方法不存在。 我无法find一种方法来获取我在Startup.Auth.cs中构build的UserManager // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app) { //Configure the db context, user manager and role manager to use a single instance per […]
我使用Visual Studio 2013附带的Web Api 2模板,有一些OWIN中间件来执行用户身份validation等。 在OAuthAuthorizationServerOptions我注意到OAuth2服务器设置为OAuthAuthorizationServerOptions在14天内到期的令牌 OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/api/token"), Provider = new ApplicationOAuthProvider(PublicClientId,UserManagerFactory) , AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true }; 这不适合我最新的项目。 我想分发可以使用refresh_token刷新的短暂bearer_tokens 我做了大量的search,并找不到有用的东西。 所以这是我设法得到的。 我现在已经达到了“现在做我跆拳道”的地步。 我已经编写了一个RefreshTokenProvider ,它根据OAuthAuthorizationServerOptions类的RefreshTokenProvider属性实现IAuthenticationTokenProvider : public class SimpleRefreshTokenProvider : IAuthenticationTokenProvider { private static ConcurrentDictionary<string, AuthenticationTicket> _refreshTokens = new ConcurrentDictionary<string, AuthenticationTicket>(); public […]