Выйти забаненных пользователей - PullRequest
2 голосов
/ 15 марта 2011

Я запрещаю пользователям использовать следующее:

MembershipUser user = Membership.GetUser(username);
if (user != null)
{
    user.IsApproved = false;
    user.LastLoginDate = DateTime.Now;
    Membership.UpdateUser(user);
}

если пользователь в данный момент вошел в систему, он все еще может что-то делать на сайте, так как я могу также выйти из него?

Ответы [ 3 ]

4 голосов
/ 15 марта 2011

На вашем global.asax вы можете сделать что-то вроде этого.

Application_OnAuthenticateReuqest(object sender, EventArgs e)
{
  if(!UserHasAccess())
  {
     FormsAuthentication.SignOut();
  }
}

private bool UserHasAccess()
{
   var user = Membership.GetUser(Context.User.Identity);

   return user.isApproved;
}

Возможно, вы захотите рассмотреть какую-то форму кеширования ...

И, между прочим, я предполагаю, что вы используете надлежащие атрибуты [Authorize] в ваших методах контроллера.

1 голос
/ 15 марта 2011

Вы хотите проверять на странице загрузки каждого запроса статус пользователя. Если они забанены, вы можете просто response.End() или response.Redirect() отправить их на главную страницу.

0 голосов
/ 20 марта 2011

Вам нужно будет проверить, был ли пользователь заблокирован при каждом запросе.Этого можно добиться, используя HttpApplication (Global.asax) или, предпочтительно, используя собственный HttpModule.

...