
问题
我有一个ASP.NET webforms应用程序(W1),我想在一段时间内开始升级到单独的MVC应用程序(M1).包含W1的解决方案已升级到4.5,并且已在解决方案中创建了M1. W1使用ASP.Net成员资格框架.
测试用例
在M1中,我将Authorize属性添加到HomeController中的About页面
[授权]
公共ActionResult关于()
我在M1中添加了一个指向about页面的链接,该链接源自W1中需要用户登录的页面.
期待
我希望用户能够登录W1,点击M1关于页面的链接并自动登录到M1.
配置
步骤1
我使用here概述的方法从W1中提取了valIDationKey和decryptionKey.虽然这似乎是一个逻辑步骤,但我不确定它是否必需,因为不同的键仍然允许用户登录到W1.
第2步
根据信息here和here,经过大量调试后,我修改了项目的Web.config文件部分,如下所示;
对于W1:
<system.web> <authentication mode="Forms"> <forms name="WRSAUTH" loginUrl="~/Account/Login.aspx" defaultUrl="Default.aspx" protection="All" timeout="60" path="/" domain=".localhost" requireSSL="false" slIDingExpiration="true" cookieless="Usecookies" enableCrossAppRedirects="false" /> </authentication> <machineKey valIDationKey="<ValIDationKey>" decryptionKey="<DecryptionKey>" valIDation="SHA1" decryption="AES"/><compilation deBUG="true" targetFramework="4.5"> <httpRuntime maxRequestLength="12288" /></system.web>
对于M1:
<system.web> <authentication mode="Forms"> <forms name="WRSAUTH" loginUrl="~/Account/Login" defaultUrl="~/" protection="All" timeout="60" path="/" domain=".localhost" requireSSL="false" slIDingExpiration="true" cookieless="Usecookies" enableCrossAppRedirects="false"/> </authentication> <machineKey valIDationKey="<ValIDationKey>" decryptionKey="<DecryptionKey>" valIDation="SHA1" decryption="AES"/> <compilation deBUG="true" targetFramework="4.5"/> <httpRuntime targetFramework="4.5"/> </system.web> <system.webServer> <modules> <!--<remove name="FormsAuthentication"/>--> </modules> </system.webServer>
当前状态
当点击W1中以M1为目标的链接时,用户未获得授权并显示登录屏幕.
我在配置中缺少什么?
解决方法 最后去上班吧!1)不能在本地使用localhost或.localhost设置为域
2)在W1中需要将属性targetFramework =“4.5”添加到httpRuntime
3)在W1中需要添加< add key =“ValIDationSettings:UnobtrusiveValIDationMode”value =“None”/>在AppSettings节点内(标记)
希望我花时间发布这个问题和答案有助于某人.我在很多帖子中找到了这个解决方案的部分,但这将它们全部组合在一起.
总结以上是内存溢出为你收集整理的通过cookie共享ASP.NET webforms和MVC身份验证全部内容,希望文章能够帮你解决通过cookie共享ASP.NET webforms和MVC身份验证所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)