+! Спасибо! Никаких проблем с перфорированием, из-за веб-форм и других оконных разработок. Я просто думал, что делаю что-то ужасно неправильно / эффективно! (Также я обычно самокритичен! = P)
ожет быть немного невежественный вопрос, но я новичок в mvc, так что я извиняюсь!
Я изучил модель аутентификации обеда для ботаников, но в моем приложении сложная аутентификация на основе ролей. Итак, что я делаю, это:
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie = HttpContext.Current.Request
.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
string encTicket = authCookie.Value;
if (!String.IsNullOrEmpty(encTicket))
{
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt(encTicket);
CustomIdentity id = new CustomIdentity(ticket.Name);
GenericPrincipal prin = new GenericPrincipal(id, id.Roles);
HttpContext.Current.User = prin;
}
}
}
При входе в систему я аутентифицирую имя пользователя / пароль с помощью FormsAuth, а затем создаю cookie.
Проблема здесь каждый раз, когда я создаю пользовательскую личность, я должензапросить в базе данных роли пользователей, Есть ливерный обойти это или я делаю правильную вещь, чтобы запросить БД на каждый входящий запрос? Должен ли я сохранить список ролей в куки или что-то?
Я также не совсем понимаю весь жизненный цикл того, как аутентификация форм заботится об аутентификации? Я использую то же самоеIFormsAuthentication
шаблон дизайна, что пользователи ужин ботаник и во время входа я звонюFormsAuth.SignIn()
который в свою очередь вызываетFormsAuthentication.SetAuthCookie
Когда ему удается позвонитьmembershipservice.validateuser()
метод ?? Также еслибыл установлен auth cookie зачем ботанику на ужин создать билет, затем добавить его в запрос, а затем прочитать его во времяPostAuthenticationRequest
чтобы проверить, какой это был пользователь. Работает ли билет как сессия?
Спасибо! Счастливого Рождества!
Обновить : Эта ссылка дал мне немного лучшее понимание о билете аутентификации форм.