注销禁止用户
IM用户禁止以下:注销禁止用户
MembershipUser user = Membership.GetUser(username);
if (user != null)
{
user.IsApproved = false;
user.LastLoginDate = DateTime.Now;
Membership.UpdateUser(user);
}
如果用户当前已登录,他们仍然可以做的事情在网站上,这样我怎么能还其注销?
在您的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;
}
你可能要考虑某种形式的缓存...
而且顺便说一句,我假设你使用正确的控制器方法上的[授权]属性。
你想检查pageLoad每个请求的用户状态。如果他们被禁止,你可以简单地response.End()
或response.Redirect()
他们到主页。
不幸的是,AJAX调用可以使这个棘手。 – 2011-03-15 20:51:35
我明白这一点,但response.End()至少会阻止用户检索更多内容。 – 2011-03-15 20:55:13
您将不得不验证用户是否被禁止每个请求。您可以使用HttpApplication(Global.asax)或最好使用自定义HttpModule来实现此目的。
'Global.asax'听起来像是最好的地方,下一个最好的可能是一个主页'page_load'我会想象的。 – 2011-03-15 20:54:54
Upvoted。这基本上是我如何处理相同的问题(虽然我使用MVC3所以它不同),它运作良好。缺点是,如果用户已通过检查数据库被禁用,我确实需要检查每个请求。 我看到你缓存它的唯一方法是,如果你的成员更新方法实际上是更新缓存本身,并且你的授权方法检查了缓存。 – 2011-03-15 20:56:33
我需要缓存什么? – raklos 2011-03-15 22:11:12