我的应用程序中的每个页面都有一个权限检查代码段,如下所示
<%
int permission = Int32.Parse(Session["userpermission"].ToString());
if (permission != 1) {
Response.Redirect("Login.aspx");
}
%>
因此,如果它不等于1,那么它将重定向到登录页面,但现在我需要在特定页面中将权限= 2添加到此条件中,其中权限级别1和1都是2可以进入,但我尝试使用OR运算符“|”如果条件如(权限!= 1 |权限!= 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
将始终为真。
毕竟,没有可能的数字可以等于1
和2
,所以它总是等于其中一个。
您想检查它是否不等于1
和也不等于2
。