0

我有一个具有 3 种用户类型的 ASP.NET Web 应用程序:用户、成员、管理员。

现在我想为每个页面创建一个方法,我可以使用该方法检查用户的类型,如果不允许他访问此页面,则应将用户重定向到主页。

目前我在每个页面的 Page_Load 中都有这种代码:

if (Session["userID"] != null)
        {
            User user = userDALC.Read(Convert.ToInt32(Session["userID"]));

            if (user.Type == 1)
            {
                Response.Redirect("~/Home.aspx");
            }
        }
        else
        {
            Response.Redirect("~/Home.aspx");
        }

此页面仅对成员和管理员 (2,3) 可见,如果用户 (1) 想要访问此页面,他将被重定向。

所以,很明显这段代码绝对不适合我使用,因为它经常重复。(在每一页上)

现在,我的想法是为每个页面添加一个属性“权限”,我可以在其中设置允许哪些用户类型访问该页面。而且我还需要一个方法来检查每个页面上的这个权限属性。

任何想法,我如何添加这样的属性以及可以添加此方法的任何想法?(也许是母版页?)

4

1 回答 1

0

有几个地方可以实现这种方法。在母版页的页面加载中将起作用。

您可以创建自己的 Page 类,该类继承自核心 Page 类,在那里实现逻辑,并使用您的自定义 Page 类。

您可以完全从页面中取出逻辑并在 global.asax中的Begin_Request处理程序期间运行它。这里要注意的是,此方法适用于您的应用程序处理的所有请求,其中可能包括对 javascript、css、图像、文档等的请求。此外,此时您将无法访问页面对象,因此您需要根据 URL 确定要检查授权的请求。

您可以更进一步,实现一个HttpHandler,它根据用户身份和请求的详细信息检查授权。逻辑类似于在 global.asax 中执行检查。

然而,正如已经指出的那样,asp.net 确实通过用户角色提供了开箱即用的所有这些东西。

于 2012-10-24T15:41:11.787 回答