Я внедрил собственный пользовательский MemberhipProvider с пользовательским хранилищем данных. На данный момент проблем нет. Я бы хотел, чтобы люди входили в систему, используя свой адрес электронной почты вместо имени пользователя. Поскольку у меня есть собственное хранилище данных, это не является серьезной проблемой, я могу просто передать электронное письмо как имя пользователя для MembershipProvider.Сохранение дополнительных пользовательских данных в MemberhipProvider/FormsAuthenticationTicket
Вопрос в том, как хранить дополнительные пользовательские данные в FormsAuthenticationTicket? Я хочу сохранить пару вещей, которые никогда не изменятся, например, их UserId, First/Last Name и Country. Я начал изучать создание FormsAuthenticationTicket с UserData, но быстро запутался. Как хранить несколько вещей в этой UserData, и как я могу легко читать эти данные на каждой странице ASP.NET MVC2. Я нашел много образцов, ни один из которых не казался таким большим с точки зрения MVC2. Должен быть простой способ сделать это.
Нет смысла читать UserId, First/Last Name и страну из базы данных по каждому запросу, потому что она никогда не изменится. Кроме того, хотя я хочу, чтобы пользователь входил в систему, используя свой адрес электронной почты, я хотел бы сохранить их UserId в файле cookie auth, чтобы его можно было использовать почти для каждого пользовательского запроса к базе данных, а не по электронной почте (потому что во всех таблицах пользовательские данные сохраняются вместе с UserId - а не по электронной почте, потому что технически электронная почта может быть изменена - я уже понял, что это происходит, когда дело доходит до MembershipProvider).
Каковы наилучшие методы хранения дополнительных пользовательских данных, подобных этому в ASP.NET MVC2?
Я хотел бы сохранить эти несколько вещей на клиенте, если это возможно, потому что это веб-приложение будет размещено на многих серверах, и пользователи не гарантированно снова окажутся на том же сервере. Я понимаю, что я могу хранить это в своем собственном (зашифрованном) куки-файле, но понял, что может быть больше смысла помещать его в файл cookie? Таким образом, мне не нужно управлять двумя файлами cookie. Кроме того, я хотел бы прочитать значения, используя User.Identity.something или что-то подобное просто. – Stefan
Что происходит, когда один из ваших пользователей выходит замуж? –
Данные, которые я хочу добавить в файл cookie, не будут меняться во время сеанса. Первое/последнее имя может быть изменено в базе данных (где данные загружаются с одного раза при входе пользователя в систему). Он будет правильно заполняться в следующий раз, когда пользователь войдет в систему. Такое поведение ожидается. – Stefan