Аутентификация двойных форм в asp.net 2.0 - 4.0
ФОН
У меня есть два сайта в одном домене. Один веб-сайт включает в себя только функции входа / управления учетными записями, а другой веб-сайт является настоящим веб-сайтом.
- LoginWeb - только страница входа в систему / папка css/images/javascript разрешает анонимный доступ
- AdminWebsite - полностью заблокирован через формы авторизации. то есть даже нет папок javascript/images/css
<authorization><allow users=*>
Что я пытаюсь достичь
Это рабочий процесс, который я пытаюсь достичь и выполнил 99%:
- Если пользователь переходит на какую- либо страницу на сайте AdminWebsite, он отправляется обратно в LoginWeb с помощью FormsAuthentication
- Пользователь вводит учетные данные на странице входа в систему, а веб- сайт LoginWeb выдает билет для проверки подлинности форм. Пользователь еще не вошел в AdminWebSite. (Таким образом, пользователь может перейти на страницу смены пароля и т. Д. И выполнить функции управления учетной записью)
- Пользователь проходит еще два шага в LoginWeb и теперь может получить билет FormsAuth для AdminWebsite и перенаправиться на него.
99% уже работает
Это код в LoginWeb, который пытается выдать билет FormsAuth для AdminWeb, но он не работает. то есть AdminWeb все еще перенаправляет меня обратно на страницу входа. Я уверен, что есть кое-что очень тривиальное, что я пропускаю, но я не могу понять, что именно это?????????
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 для Auth форм:
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>
1 ответ
Этот сайт, проверка подлинности форм в приложениях, подразумевает, что имя в атрибуте форм должно быть одинаковым.