/** 根据用户访问的uri,加载该uri所需要角色列表  Object object:uri地址 */
  public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
    // 最初请求的uri格式:/crm/index.jsp
    // object 是一个URL ,为用户请求URL
    String url = ((FilterInvocation) object).getRequestUrl().trim();
    if ("/".equals(url)) {
      return null;
    }

    int firstQuestionMarkIndex = url.indexOf("?");
    if (firstQuestionMarkIndex == -1) firstQuestionMarkIndex = url.length();
    // 判断请求是否带有参数 如果有参数就去掉后面的后缀和参数(/index.do --> /index)
    if (firstQuestionMarkIndex != -1) {
      url = url.substring(0, firstQuestionMarkIndex);
    }
    // 最终形成的uri 格式:/index

    if (url.startsWith("/")) {
      url = url.substring(1);
    }

    // 当前有用户,通过URL 获得资源 ,并写入日志里面
    TUserLog userLog = new TUserLog();
    if (null != UserSession.get("user")) {
      TUser user = (TUser) UserSession.get("user");
      userLog.setIUser(user.getId());
      userLog.setVcUserName(user.getVcAccount());
    }

    String desc = resourceService.getResourceDescByUrl(url);
    userLog.setVcDesc(desc);
    // 把用户 时间 操作描述 保存到日志表里
    String ip = (String) UserSession.get("ip");
    userLog.setVcIp(ip);

    userLogService.saveLog(userLog);

    Iterator<String> ite = resourceMap.keySet().iterator();
    // 取到请求的URL后与上面取出来的资源做比较
    while (ite.hasNext()) {
      String resURL = ite.next().trim();
      if (url.equals(resURL)) {
        // 获得该uri所需要的角色列表
        return resourceMap.get(resURL);
      }
    }
    // 如果数据库里面没有该uri的信息,表示该uri不需要经过权限验证了
    return null;
  }