Наши страницы приложений ASP.NET развернуты как функция в ферме MOSS 2007.
Когда пользователь входит на сайт, он перенаправляется на страницу по умолчанию.
В правом верхнем углу есть опция «Войти как другой пользователь».
Если пользователь выбирает эту опцию и вводит учетные данные другого пользователя, отображается сообщение «Доступ запрещен».
Это сообщение не имеет смысла, так как все пользователи имеют доступ к этой странице по умолчанию. Кроме того, если пользователь теперь переходит к адресной строке и вручную меняет URL-адрес на страницу по умолчанию, страница загружается. В исходной части URL-адреса «Отказано в доступе» видно, что закодированный URL-адрес целевой страницы является ожидаемым URL-адресом страницы по умолчанию.
Ранее я внес изменение в файл INIT.JS, чтобы перенаправить пользователя в случае, если изменение входа выполняется со страницы, которая не является страницей по умолчанию.
function LoginAsAnother(url, bUseSource)
{
document.cookie="loginAsDifferentAttemptCount=0";
if (bUseSource=="1")
{
GoToPage(url);
}
else
{
var ch=url.indexOf("?") >=0 ? "&" : "?";
//url+=ch+"Source="+escapeProperly(window.location.href);
url+=ch+"Source="+escapeProperly(getSspLocation(window.location.href));
STSNavigate(url);
}
}
Исходная строка закомментирована.
Функция getSspLocation
- это просто функция, которую я написал для получения URL-адреса страницы по умолчанию из любого другого URL-адреса.
function getSspLocation(url) {
var parts = url.split('/');
var result = "";
for (var i = 0; i < parts.length; ++i) {
result += parts[i] + "/";
if (parts[i].toLowerCase() == "ssp")
return result + "default.aspx";
}
return url;
}
Есть идеи?