ASPX页面的权限检查代码段

时间:2013-09-17 14:27:50

标签: c# asp.net

我的应用程序中的每个页面都有一个权限检查代码段,如下所示

<% 
int permission = Int32.Parse(Session["userpermission"].ToString());
if (permission != 1) {
    Response.Redirect("Login.aspx");
}

%>

因此,如果它不等于1,那么它将重定向到登录页面,但现在我需要在特定页面中将权限= 2添加到此条件中,其中权限级别1和1都是2可以进入,但我尝试使用OR运算符“|”如果条件如(权限!= 1 |权限!= 2),但是两个权限级别都不能进入页面,请提出解决方案。

2 个答案:

答案 0 :(得分:1)

授权用户不是一个好的设计实践。未来的维护将是噩梦。

理想情况下,您希望使用基于角色的授权。

如果您无法实施角色基本授权,则至少可以使用 BasePage ,并从 BasePage 继承所有xxx.aspx.cs。

public partial class Default : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

public class BasePage : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    {
        int permission = Convert.ToInt32(Session["userpermission"] ?? "0");
        if (permission == 1 || permission == 2)
        {
            // User is authorized, so allow access.
        }
        else
        {
            Response.Redirect("Login.aspx");
        }
    }
}

你也可以使用这样的逻辑。我个人不喜欢它,因为它很难阅读。

if (permission != 1 && permission != 2)
{
    Response.Redirect("Login.aspx");
}

答案 1 :(得分:0)

检查权限是否等于1 不等于2将始终为真。
毕竟,没有可能的数字可以等于12,所以它总是等于其中一个。

您想检查它是否不等于1 也不等于2