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