我禁止用户使用以下内容:
MembershipUser user = Membership.GetUser(username);
if (user != null)
{
user.IsApproved = false;
user.LastLoginDate = DateTime.Now;
Membership.UpdateUser(user);
}
如果用户当前已登录,他们仍然可以在网站上执行操作,那么我该如何将其注销?
答案 0 :(得分:4)
在你的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 :(得分:1)
您想要检查页面在每个请求上加载用户的状态。如果他们被禁止,您只需response.End()
或response.Redirect()
他们到主页。
答案 2 :(得分:0)
您必须验证用户是否已在每个请求中被禁止。您可以使用HttpApplication(Global.asax)或最好使用自定义HttpModule来实现此目的。