Однако я хочу повторно использовать некоторые, если не все, библиотеки классов. Большинство этих библиотек невозможно перенаправить на стандарт .net, поскольку они содержат ссылки на наш пользовательский объект. Этот пользовательский объект реализует MembershipUser... который, конечно, больше не доступен в Core.
Таким образом, они, похоже, реализовали MembershipUser, но почти все сделали на заказ, большинство функций в членстве. не были реализованы, только некоторые.
Я хочу тратить как можно меньше времени на этот старый веб-сайт, поэтому вот что я попробовал:
Я установил пакеты Microsoft.AspNet.Identity.Core (и Owin, где это необходимо, я выбираю их, потому что они должны работать как с .NET Framework, так и с Core). Удалена производная от MembershipUser в объекте пользователя, и вместо этого она производна от IdentityUser. IdentityUser — это пользовательский класс, который я унаследовал от IUser.
Я удалил наш пользовательский класс членства, который является производным от MembershipProvider (который реализовал лишь несколько функций). И я создал класс, производный от UserStore, а также от UserPasswordStore. Пока все хорошо (я думаю).
Сейчас у меня возникают трудности с этим фрагментом кода:
Код: Выделить всё
private void SetAuthTicket(HttpContext httpContext, string username)
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, username, DateTime.Now, DateTime.Now.AddMinutes(SessionDuration), true, FormsAuthentication.FormsCookiePath);
string ticketHash = FormsAuthentication.Encrypt(ticket);
HttpCookie ticketCookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticketHash);
ticketCookie.Expires = DateTime.Now.AddMinutes(SessionDuration); //--> Removed Double duration possible loginbug cause//Double session duration because sliding only updates after half the exp time has been exceeded
httpContext.Response.Cookies.Add(ticketCookie);
int uid = ((User)HttpContext.Current.User).Id;
string hostName = Dns.GetHostName(); // Retrieve the Name of HOST
var IPAddress = Dns.GetHostEntry(hostName).AddressList[Dns.GetHostEntry(hostName).AddressList.Length-1].ToString();
var externalIp = getExternalIP();
var UserAgent = HttpContext.Current.Request.UserAgent;
LoginTicket dbticket = new LoginTicket()
{
CreatedBy = new EntityReference(uid),
Ticket = ticketHash,
UserId = uid,
UserAgent = UserAgent,
IPaddress = IPAddress,
ExternalIPaddress = externalIp?.ToString()
};
DBA.Save(dbticket);
}
Может ли кто-нибудь указать мне направление хорошего руководства или объяснить, как это сделать? пойти на это?
Подробнее здесь: https://stackoverflow.com/questions/792 ... web-config
Мобильная версия