我的 IIS 服务器上运行了 4 个应用程序。其中一个应用程序是我的“主站点”,如图所示,有 3 个子应用程序 -
所有这些站点都在同一个域中:mainSite.mydomain.com、app1.mydomain.com 等。
我希望用户能够登录到 APP 1、APP 2 或 APP 3 并登录到 MAIN SITE,但是如果用户登录到 APP 1,他们将无法访问 APP 2 或 APP3。因此,基本上用户只能使用相同的登录名访问其中一个应用程序和主站点。
我目前使用以下代码,但这允许用户使用相同的登录名访问所有应用程序:
<forms name=".ASPXAUTH" loginUrl="Login/" protection="Validation" timeout="120" path="/" domain=".mydomain.com"/>
这是我用来创建身份验证票的代码:
var ticket = new FormsAuthenticationTicket(
1, user.EmailAddress,
now,
now.Add(mExpirationTimeSpan),
createPersistentCookie,
user.EmailAddress,
FormsAuthentication.FormsCookiePath);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
cookie.Secure = FormsAuthentication.RequireSSL;
cookie.Path = FormsAuthentication.FormsCookiePath;
if (FormsAuthentication.CookieDomain != null)
{
cookie.Domain = FormsAuthentication.CookieDomain;
}
mHttpContext.Response.Cookies.Add(cookie);
我将如何确定用户应该有权访问哪些应用程序并限制用户访问其他应用程序?我目前唯一能想到的是以某种方式将有关使用哪个应用程序的信息添加到 cookie 中,但是我能解密这些信息吗?