0

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

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

%>

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

4

2 回答 2

1

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

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

如果无法实现 Role 基础授权,至少可以使用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");
}
于 2013-09-17T16:51:42.243 回答
0

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

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

于 2013-09-17T14:29:33.107 回答