C# 控制对Web窗体的访问

C# 控制对Web窗体的访问,c#,asp.net,web,C#,Asp.net,Web,我有两个使用ASP.NET创建的web表单 一个是登录web表单,另一个显示信息 当用户成功登录时,登录表单会将其重定向到其他web表单 如何阻止用户在URL中键入web表单的名称,即控制对某些页面的访问 我的目标是让用户登录,并且只有当他们登录时,他们才能访问其他表单 谢谢。有几种方法可以做到这一点 我过去的做法是创建一个CurrentUser singleton类,该类在登录时填充用户信息,并在会话中持久化(尽管是一个简单的会话[“LoggedIn”]=true也可以完成这项工作-该类将允许

我有两个使用ASP.NET创建的web表单

一个是登录web表单,另一个显示信息

当用户成功登录时,登录表单会将其重定向到其他web表单

如何阻止用户在URL中键入web表单的名称,即控制对某些页面的访问

我的目标是让用户登录,并且只有当他们登录时,他们才能访问其他表单


谢谢。

有几种方法可以做到这一点

我过去的做法是创建一个CurrentUser singleton类,该类在登录时填充用户信息,并在会话中持久化(尽管是一个简单的会话[“LoggedIn”]=true也可以完成这项工作-该类将允许您在一个位置存储更多信息,包括用户角色等,使其易于访问

然后创建这样的类(请原谅伪代码)

然后,您可以使希望安全的任何页面从此继承,而不是直接从System.Web.UI.Page继承:

public class HomePage : Page
{...}
变成

public class HomePage : SecureBase
{...}

完成后,任何未登录的用户都将被重定向,任何其他人都将正常进行。

也许您可以在这里找到一些答案:另一个快速解决方法是将有效用户状态设置为会话变量,并在所有内部页面中包含ascx页面。在那里,您可以始终检查会话变量,如果不是有效会话,则重定向。@Dare太好了,谢谢。@ray,也很有用,非常感谢。
public class HomePage : SecureBase
{...}