到止前为止, 用WebChart显示的信息都是很关键的, 都只能限于一定范围内可以查看, 这就要求WebChart必须具有一定的安全机制, 来控制访问. 在WCML文件中, 有四个属性可以用于控制访问的权限.

WEBCHART.SECURITY={TRUE|FALSE}
WEBCHART.DEFAULTACCESS={ALLOW|DENY}
WEBCHART.DENY=role|role|...
WEBCHART.ALLOW=role|role|...

    用上面四个值再加上是否登录来综合控制访问权限, 具有角色权限控制及拒绝(Deny)优先的概念, 过程可以用下图表示.

    如何登录呢? 其实就是要创建一个Web的会话, 并在会话级设置以下属性值, 这些属性不能以页面参数的方式传入.

SESSION.LOGINID=user id
SESSION.LOGINNAME=user name
SESSION.LOGINROLE=role list

    你完全可以创建自定义的用户登录系统, 与现有的系统统一登录帐号. 也可以用默认的登录功能, 首先需要在ADMINDB中创建一张用户表, 并录入初始用户数据.

CREATE TABLE WEB_USERS
(
  LOGIN_ID VARCHAR(20) NOT NULL PRIMARY KEY,
  LOGIN_NAME VARCHAR(50) NOT NULL,
  LOGIN_PASSWD VARCHAR(20) NOT NULL,
  LOGIN_ROLE  VARCHAR(100)
)

    然后将LOGIN_ID, LOGIN_PASSWORD, LOGIN_PAGE(登录成功后的页面URL), ERROR_PAGE(登录失败后的URL)传给login.sa就可以. 如果要退出登录, 则只需要传LOGIN_PAGE(退出后重定向的URL)到logout.sa就可以了.

<form action="login.sa" method="post">
  <input type="hidden" name="LOGIN_PAGE" value="...">
  <input type="hidden" name="ERROR_PAGE" value="...">
  <table border="0">
      <tr>
        <td> Username: </td>
        <td><input type="text" name="LOGIN_ID" size="20">
        </td>
      </tr>
      <tr>
        <td>Password: </td>
        <td><input type="password" name="LOGIN_PASSWORD" size="20">
        <input type="submit" Value="Login">
        </td>
      </tr>
  </table>
</form>

    上述安全功能用于内网控制已经能胜任了. 从防止SQL注入的攻击来讲, 所有的SQL都只能定义在WCML文件中, 不允许以页面参数的方式来传入.