ИСТОРИЯ
У меня два сайта в одном домене. Один веб-сайт включает только функции входа в систему / управления учетной записью, а другой веб-сайт является настоящим веб-сайтом.
- LoginWeb - анонимный доступ разрешен только в папке Login Page / css / images / javascript.
- AdminWebsite - полностью заблокирован через формы авторизации. то есть даже в папках javascript / images / css нет
<authorization><allow users=*>
ЧТО Я ПЫТАЮСЬ ДОСТИГНУТЬ
Это рабочий процесс, которого я пытаюсь достичь и выполнил на 99%:
- Если пользователь попадает на любую страницу AdminWeb, он отправляется обратно в LoginWeb с помощью FormsAuthentication.
- Пользователь предоставляет учетные данные на странице входа, и веб-сайт LoginWeb выдает билет для авторизации форм. Пользователь еще не вошел в AdminWebSite. (Таким образом, пользователь может перейти на страницу изменения пароля и т. Д. И выполнить функции управления учетной записью)
- Пользователь выполняет еще два шага в LoginWeb, и теперь ему может быть выдан билет FormsAuth для AdminWeb и перенаправлен на него.
99% УЖЕ РАБОТАЕТ
Это код в LoginWeb, который пытается выдать билет FormsAuth для AdminWeb, но он не работает. То есть AdminWeb все еще перенаправляет меня обратно в Login. Я уверен, что мне не хватает чего-то очень тривиального, но я не могу понять, что именно ?????????
public void SetAuthenticationTicket(string username)
{
MachineKeySection sec=(MachineKeySection)WebConfigurationManager.OpenWebConfiguration("").SectionGroups["system.web"].Sections["machineKey"];
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false, //true or false
sec.DecryptionKey, //Custom data like your webkey can go here
FormsAuthentication.FormsCookiePath);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie("ADMINWEB", encryptedTicket)
{
Path = FormsAuthentication.FormsCookiePath,
Domain = "xxx.com"
};
Response.AppendCookie(cookie);
}
Это мои разделы web.config для аутентификации с помощью форм:
LoginWeb
<machineKey validationKey="XXXXXX" decryptionKey="XXX" validation="SHA1"/>
<authentication mode="Forms">
<forms name="LoginWeb"
domain="xxx.com"
loginUrl="~/account/Logon"
timeout="1440"
cookieless="UseCookies"
slidingExpiration="false"
protection="All"
path="/"/>
</authentication>
AdminWebSite
<machineKey validationKey="XXXXXX" decryptionKey="XXX" validation="SHA1"/>
<authentication mode="Forms">
<forms name="ADMINWEB"
domain="xxx.com"
loginUrl="http://loginweb/account/Logon"
timeout="1440"
cookieless="UseCookies"
slidingExpiration="false"
protection="All"
path="/"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>