1
我們有兩個單獨的MVC 4 Web應用程序,它們作爲同一網站的一部分運行。主(父)項目具有身份驗證,並且工作正常。現在我們已經將第二個項目添加到同一個站點(一個運行在子框架中的頁面),我們無法弄清楚如何使用戶通過父應用程序進行授權。在父應用程序和子應用程序之間共享身份驗證
兩者都使用相同的形式元素在web.config中:
<forms loginUrl="~/Account/LogOn" name=".ASPXFORMSAUTH" domain="..." protection="All" timeout="2880"/>
我需要比孩子項目的[授權 - 標籤嗎?
[Authorize]
public class HomeController : Controller
{
...
public ActionResult Index()
{
return View();
}
...
}
大概是不用說了,如果我嘗試訪問該子項目的HomeController中,即使用戶在父項目登錄頁面被重定向到登錄頁面。
這兩個項目都使用相同的machineKey。
任何想法?
它們使用相同的域字符串,並且它們也具有相同的machineKey元素。然而,域名字符串與「domain.com」類似,而網站訪問的網址類似於「sub1.sub2.domain.com」。只要字符串在父類和子類web.configs中匹配,這是否會有所作爲? – SamiHuutoniemi
不,如果您的網站託管在「sub1.domain.com」和「sub2.domain.com」上,您應該將域屬性設置爲「domain =」domain.com「'。如果您不使用任何ASP.NET會話,這應該工作。這只是共享表單身份驗證Cookie,而不是會話。如果你依賴某個會話,它將無法工作,因爲會話默認存儲在應用程序的內存中。如果您希望能夠在應用程序之間共享會話,則必須使用共享會話提供程序(例如SQL Server)。 –
是的。我們只是分享表單身份驗證Cookie。所以這應該工作。但是,它沒有。我可以看到,Cookie是在Chrome中創建的,但不知道爲什麼子項目無法解密它。 – SamiHuutoniemi