2010-11-27 39 views
0

我在网页上的工作是检查ROLE_ID = 3或是否如果是3,那么组合框的条件可见

 if ((Int32.Parse(Session["RoleID"].ToString()) == 3)) 

     { 

      cmbempList.Visible = false; 

     } 

现在我想检查与ROLE_ID = 3的用户是指导者与否,如果他是导师,那么cmbempList将对他可见。

public bool CheckMentorAccess() 

    { 

     bool blnAllow = false; 

     try 
     { 
      string strSelectMentorQuery = "SELECT COUNT(DISTINCT MLL.LED_ID) FROM M_USER_DETAILS MUD INNER JOIN M_LEADERLED MLL " 
       + "ON MLL.LED_ID = MUD.PK_ID WHERE MLL.LEADER_ID = '" + Session["UserID"].ToString() 
       + "' AND MUD.ACTIVE = 1 AND MLL.START_DATE <= Getdate() AND" 
       + " MLL.END_DATE > Getdate()"; 

      int intNoOfMembers = Convert.ToInt32(cSQLHelper.myExecuteScalar(strSelectMentorQuery)); 

      if (intNoOfMembers > 0) 
      { 
       blnAllow = true; 
      } 

     } 
     catch (Exception ex) 
     { 
      ExceptionLogger.LogException(ex); 
      blnAllow = false; 
     } 

     // Return the value 
     return blnAllow; 
    } 

如果此函数返回true,并且ROLE_ID = 3,那么cmbempList将对他可见。

有人能帮助我吗?

+0

@OP - 你应该考虑修改你的SQL使用参数化查询,或者存储过程,以降低风险SQL注入。在你提供的例子中,如果`Session [“UserID”]`恰好被设置为恶意字符串,你就会被注入。 – 2010-11-27 05:52:06

回答

1

什么是那么问题,你有CheckMentorAccess()函数,如果登录用户返回true的导师,你已经在会话变量存储RULEID所以现在您的业务规则说,

现在我想检查ROLE_ID = 3的用户是否是指导者,如果他是导师,那么cmbempList将对他可见

如果你分析这句话

,它包含两个语句

1-用户必须有一个角色ID = 3

2 - 用户必须被导师。

所以如果你想结合这些语句,它将成为用户必须有role_id = 3,用户必须是导师。

所以转换上述条件中的C#代码

int roleId 

if(int.TryParse(Session["RoleID"].ToString(),out roleId)) 
{ 
    cmbempList.Visible = ((roleId == 3) && CheckMentorAccess()); 
}