asp.net – 如何从单独的.NET应用程序获取当前上下文或用户标识
背景
我正在开发从遗留的ASP.NET表单应用程序到MVC 4应用程序的迭代迁移. 此迁移分阶段进行,一次一个部分,因此有必要同时运行旧版和新版MVC应用程序.对于某些部分,用户将被定向到新应用程序,对于尚未迁移的部分,用户将被定向回(或保留在)旧应用程序上. 在服务器上,应用程序的结构如下: LEGACY (.NET 2.0 forms app)-- |--Api (new MVC 4 WebAPI) |--V2 (new MVC 4) 因此,对遗留的foo页面的调用是/foo.aspx,而在V2它是/ V2 / foo. 一切都在C#中,但请注意遗留应用程序在.NET 2.0上运行,V2应用程序在.NET 4.5上运行.我不确定这是否重要,但认为重要的是要注意. 问题 我无法在应用程序之间成功共享用户/身份验证状态.显然,如果用户登录遗留应用程序,我需要在调用V2页面时在V2应用程序上获取其auth cookie(或采取类似操作),以便再次提示用户无法登录. 我试过了什么 我在两个web.config文件中都设置了相同的authentication和machinekey元素: <authentication mode="Forms"> <forms cookieless="UseCookies" defaultUrl="~/someUrl" loginUrl="/" path="/" protection="All" timeout="240" enableCrossAppRedirects ="true" domain="someDomain.com" requireSSL="false" /> </authentication> <machineKey validationKey="DE78CF63226. . .788658D142AB881" decryptionKey="0B97E8BA4C4EB4B4C524. . .54E4622E14168D2D5C84461FA2" validation="SHA1" decryption="AES" /> 我在V2应用程序的Global.asax中尝试了这段代码: protected void Application_AuthenticateRequest(Object sender,EventArgs e) { string cookieName = FormsAuthentication.FormsCookieName; HttpCookie authCookie = Context.Request.Cookies[cookieName]; if (authCookie == null) { return; } FormsAuthenticationTicket authTicket = null; try { authTicket = FormsAuthentication.Decrypt(authCookie.Value); } catch { return; } if (authTicket == null) { return; } string[] roles = authTicket.UserData.Split(new char[] { '|' }); var id = new FormsIdentity(authTicket); var principal = new GenericPrincipal(id,roles); //Thread.CurrentPrincipal = principal; Context.User = principal; } 但我不知道它是否有效,因为遗留应用程序与我的V2应用程序不在同一个解决方案中,因此当我调试V2应用程序时,我没有办法通过Legacy应用程序登录并模拟在legacy和V2之间跳跃的实际用户体验. 我也尝试将它添加到我的HomeController中,希望相同的机器键对我有用: ViewBag.UserName = User.Identity.Name; 显然,我然后将ViewBag.UserName绑定到视图中的html元素,但这似乎也不起作用. 解决方法
在父应用程序上设置machineKey compatibilityMode =“Framework20SP2”.
.net 4.5无法从4.0(或更低版本)读取auth令牌 http://technet.microsoft.com/en-us/subscriptions/index/system.web.configuration.machinekeycompatibilitymode http://blogs.msdn.com/b/webdev/archive/2012/10/23/cryptographic-improvements-in-asp-net-4-5-pt-2.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 需要在asp.net中以分钟为单位查找音频文件的长度
- asp.net – 在页面的css部分插入内联服务器标签的正确方法是
- asp-classic – 是否有像Visual Studio一样的ASP.NET开发服
- asp.net-mvc-3 – 使用IEnumerable在域模型和视图模型之间进
- ASP.NET MVC中的角色缓存策略
- asp.net – Response.Redirect导致IsPostBack为true
- asp.net-mvc – 用于MVC网格的Kendo UI如何隐藏ID列
- ASP.NET WebForms DropDownList数据绑定奇怪的行为?
- asp.net-MVC – ASP.NET MVC:我可以说[授权角色=“管理员”
- asp.net-mvc – OWIN使用相同的MachineKey在ASP.NET MVC和W
- asp.net – 无法加载文件或程序集“Microsoft.We
- asp.net – DBMS如何影响应用程序性能?和Inform
- ASP.NET web.config中数据库连接字符串connectio
- 在asp.net mvc中生成javascript文件
- asp.net-mvc – ASP.NET MVC身份默认实现
- asp.net-mvc-3 – 当两个网格位于同一页面时进行
- asp.net-mvc – 我应该选择云吗?
- asp.net – .NET 4.0实现OutputCacheProvider
- asp.net – 如何在不构建网站的情况下使用MSBuil
- asp.net – 我可以隐藏/显示asp:菜单项基于角色