嘗試使用FormAuthentication通過設置web.config中的身份驗證部分,像這樣:
<authentication mode="Forms">
<forms name=".ASPXAUTH" requireSSL="true"
protection="All"
enableCrossAppRedirects="true" />
</authentication>
生成計算機密鑰。示例:Easiest way to generate MachineKey – Tips and tricks: ASP.NET, IIS ...
發送到其他應用程序時,身份驗證票證作爲隱藏字段傳遞。在閱讀第一個應用程序的帖子時,第二個應用程序將讀取加密票證並驗證用戶身份。以下是通過頁面的一個例子帖子領域:
的.aspx:
<form id="form1" runat="server">
<div>
<p><asp:Button ID="btnTransfer" runat="server" Text="Go" PostBackUrl="http://otherapp/" /></p>
<input id="hdnStreetCred" runat="server" type="hidden" />
</div>
</form>
後臺代碼:
protected void Page_Load(object sender, EventArgs e)
{
FormsIdentity cIdentity = Page.User.Identity as FormsIdentity;
if (cIdentity != null)
{
this.hdnStreetCred.ID = FormsAuthentication.FormsCookieName;
this.hdnStreetCred.Value = FormsAuthentication.Encrypt(((FormsIdentity)User.Identity).Ticket);
}
}
另見交叉應用形式的認證部分中的第5章來自Wrox的這個book。除了提供自制SSO解決方案之外,它還推薦類似上面的答案。
您是否需要在`http:// otherapp /`側寫入任何代碼,或者ASP.NET「只知道」包含FormsCookieName的POST表單? – russau 2011-08-16 22:51:51