2012-12-21 16 views
0

我对asp.net相当新,并且很难找到关于此主题的信息。什么是在浏览您的网站时检查用户权限的最佳方式?

我正在建立一个网站,允许用户上传视频。例如,如果视频不合适或主题不正确,我可以在他们下次登录时暂停其帐户,他们将被重定向到“您的帐户已被暂停”页面。我试图弄清楚什么是处理以下情况的最佳方式:在用户登录后暂停用户帐户,因此他们在登录过程中已通过验证。我基本上希望用户在下一次执行操作后重定向到“您的帐户已被暂停”页面。除了每次回发检查数据库(这似乎有点低效)之外,处理这个问题的最好方法是什么?

如果您需要更多信息或更好的示例,请让我知道。

感谢您的帮助

+1

对asp.net一点都不熟悉,所以我不知道这个建议是否适用,但我只是在用户挂起时清除所有活动会话数据。这将有效地登出他们的下一页加载。 –

+1

我只会在每次回发中检查数据库。我认为与回发时间相比,低效率可以忽略不计。 –

+0

如果您想对每个请求执行检查,则HTTP模块可能是最简单的选项:http://support.microsoft.com/kb/307996 –

回答

1

这里是我的做法。创建一个新的BasePage并继承您的aspx页面而不是System.Web.UI.Page。

public class BasePage : System.Web.UI.Page 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
     // I assume you already get the user's profile 
     if (User.IsSuspended) 
      Response.Redirect("/SuspendedPage.aspx"); 

     base.OnInit(e);  
     }  
    } 
} 

更新时间:

有很多的方法,通过存储的值进行应用程序生命周期。这是其中之一。

// Global.asax.cs 
void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 
    if (HttpContext.Current.User != null && 
     HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
     HttpContext.Current.Items["User"] = 
     GetUserByUsername(HttpContext.Current.User.Identity.Name); 
    } 
} 
+0

这与我如何检查用户是否已登录相似。我使用所有用户页面基于的主页面,并检查页面加载事件。如果User.MemberID = 0,则返回Response.Redirect(“sign-in.aspx”)。使用你的例子,User.IsSuspended属性被填充的时间和方式? – user1922133

+0

我更新了答案。 – Win

+0

我不担心一旦用户通过身份验证,信息的存储位置。它通知用户他们在成功验证后已被暂停。例如,用户登录,帐户是'有效'。用户搜索要观看的视频(用户帐户仍处于“活动”状态)。然后,我将其帐户状态更改为“已暂停”。然后用户搜索更多视频进行观看,但被重定向到一个页面显示“您的帐户已被暂停”。我可能只是在每次回发中检查其在数据库中的状态,否则暂停将不会起作用,直到他们退出然后返回。 – user1922133

相关问题