Насколько я могу судить, базовая реализация записей членства .Net lastuserlogin, но не отслеживает каждый вход в систему, что мне нужно сделать сейчас. Я провел некоторое исследование и уверен, что один из подходов - создать собственный класс, который расширяет текущий поставщик этой функциональностью, и добавить в схему таблицу событий для записи каждого входа в систему.
Я видел несколько статей на эту тему - возможно, наиболее близкой к этому является статья Скотта Митчелла http://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx, но она написана в ноябре 2008 года, и мне любопытно, может кто-нибудь подсказать мне лучшее решение для этого или подтвердите, что это все еще лучший способ справиться с этим. Я предполагаю, что это довольно распространенное требование. Я все еще использую .Net (использую c #), поэтому любая информация будет очень полезна.
EDIT
Прогресс, но еще не полностью. Я добавил следующий код для создания новой записи в таблице активности входа в систему:
if (Request.IsAuthenticated)
{
MembershipUser currentUser = Membership.GetUser(false);
string App1 = Membership.Provider.ApplicationName;
string username = currentUser.UserName;
object guid1 = currentUser.ProviderUserKey;
aspnet_CustomActivity login = new aspnet_CustomActivity
{
UserId = (Guid) guid1,
ActivityID = 1, //login
DateTime = dt1,
ApplicationName = App1
};
db.aspnet_CustomActivities.InsertOnSubmit(login);
db.SubmitChanges();
}
Итак, у меня есть небольшая проблема, когда я заметил, что ApplicationName пустое, и когда я попытался изменить его в web.config, это вызвало ошибку при получении currentUser.username, но я думаю, что смогу это решить.
Что мне нужно сделать сейчас, чтобы закончить, это привязать это к странице входа в систему, и я думаю, что смогу сделать это, основываясь на подсказках ниже. Я напишу снова, когда закончите, чтобы завершить ответ.