Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 检查用户的最佳方法是什么';当用户浏览您的网站时,是否有权限?_Asp.net_Security_Validation_Authentication_Permissions - Fatal编程技术网

Asp.net 检查用户的最佳方法是什么';当用户浏览您的网站时,是否有权限?

Asp.net 检查用户的最佳方法是什么';当用户浏览您的网站时,是否有权限?,asp.net,security,validation,authentication,permissions,Asp.net,Security,Validation,Authentication,Permissions,我是asp.net的新手,很难找到关于这个主题的信息 我正在建立一个网站,允许用户上传视频。例如,如果视频不合适或离题,我可以暂停他们的帐户,以便他们下次登录时,他们将被重定向到“您的帐户已暂停”页面。我想弄清楚的是,处理以下情况的最佳方法是什么:在用户刚刚登录后,我会挂起他们的帐户。因此,他们已经在登录过程中通过了验证。我基本上希望用户在执行下一个操作后被重定向到“您的帐户已暂停”页面。除了在每次回发时检查数据库(这似乎有点低效),处理此问题的最佳方法是什么 如果您需要更多信息或更好的示例,请

我是asp.net的新手,很难找到关于这个主题的信息

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

如果您需要更多信息或更好的示例,请告诉我


谢谢你的帮助

这是我的方法。创建一个新的
BasePage
,并从此类而不是System.Web.UI.Page继承您的aspx页面

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);
   }
}

我对asp.net一点也不熟悉,所以我不知道这个建议是否适用,但我只想在挂起用户的所有活动会话数据时清除它们。这将有效地让他们在下一次页面加载时注销。我只需在每次回发时检查数据库。我认为,与回发所需的时间相比,效率低下是可以忽略不计的。如果您想对每个请求执行检查,HTTP模块可能是最简单的选择:(David Brunow)-到目前为止,这似乎是一种可行的方法。(Richard)-我对HTTP模块一无所知,因此我必须在这方面进行自我教育。这与我检查用户是否登录的方式类似。我使用所有用户页面都基于的母版页,并检入页面加载事件。如果User.MemberID=0,则Response.Redirect(“sign-in.aspx”)。举个例子,User.issuspendend属性是如何以及何时填充的?我不担心一旦用户通过身份验证后,信息存储在哪里。它会通知用户在成功进行身份验证后已被挂起。例如,用户登录时,帐户处于“活动”状态。用户搜索要观看的视频(用户帐户仍处于“活动状态”)。然后我将他们的帐户状态更改为“暂停”。然后,用户搜索更多要观看的视频,但被重定向到一个页面,页面上显示“您的帐户已被暂停”。我可能需要在每次回发时检查他们在数据库中的状态,否则暂停将不会生效,直到他们注销后再重新登录。应用程序\u AuthenticateRequest是您所需要的。它会在每个页面请求时触发。