logo

(.NET)JTBC2.0版添加模块IP访问权限

2025-02-19 点击 5

1. 打开模块代码文件 模块\common\codefile\default.cs

在代码

public partial class module: jpage

{

下面添加

 private bool Check_IP()

  {

    bool pass = true;

    int tiponoff = cls.getNum(jt.itake("config.ip-on-off", "cfg"), 0);

    string tipon = jt.itake("config.ip-on", "cfg");

    string tUserIP = cls.getSafeString(request.ClientIP());

    if (tiponoff == 1) {

    object[] tArysAip = tipon.Split('|');//后台设置的多个用"|"分隔的IP格式成数组

    object[] tArysUip = tUserIP.Split('.');//用户的单个IP格式成数组

    if (tArysAip != null)

    {

      for (int tis = 0; tis < tArysAip.Length; tis ++)

      {

          pass = true;

              string tArysAiPSub = (string)tArysAip[tis];//单个IP转成字符串

              object[] tArysSip = tArysAipSub.Split('.');//单个IP格式成数组

              if (tArysSip != null) {

              for (int ti = 0; ti < tArysSip.Length; ti ++)

              {

              if(tArysUip.Length == 4 && (string)tArysSip[ti] != (string)tArysUip[ti]) pass = false;//判断用户的IP是否在设置的IP中

              }

              if((string)tArysSip[0]==(string)tArysUip[0] && (string)tArysSip[1]==(string)tArysUip[1] && (string)tArysSip[2]==(string)tArysUip[2] && (string)tArysSip[3] == "*") pass = true;//IP段前三位相等

              }

              if(pass) break;//如果有权限,跳出循环判断

      }

    }

}

    return pass;

  }

 

  private string Module_Ip()

  {

    string tmpstr = "";

    tmpstr = jt.itake("default.ip", "tpl");

    string tUserIP = cls.getSafeString(request.ClientIP());

    tmpstr = tmpstr.Replace("{$ip}", tUserIP);

    tmpstr = jt.creplace(tmpstr);

    return tmpstr;

  }

 

 


修改模块默认加载函数

 protected void Page_Load()

  {

    PageInit();

    ac.cntitle(jt.itake("default.channel_title", "lng"));

    string tmpstr = "";

    string tType = cls.getString(request.querystring("type"));

    if(Check_IP())

    {

    switch(tType)

    {

      case "list":

        tmpstr = Module_List();

        break;

      case "detail":

        tmpstr = Module_Detail();

        break;

      default:

        tmpstr = Module_Default();

        break;

    }

  }else{

tmpstr = Module_Ip();

  }

    PagePrint(tmpstr);

    PageClose();

  }


2. 打开模板文件 模块\common\template\default.jtbc

添加item节点一组

   <item>
      <name><![CDATA[ip]]></name>
      <tpl_default><![CDATA[{$=webHead("default_head")}
<div id="middle">
  <div id="middleContent">
        <table cellpadding="0" cellspacing="0" class="tablen">
          <tr>
            <td class="nav"><span>{$=inavigation()}</span></td>
          </tr>
          <tr>
            <td class="topic"><div>您的IP是{$ip},无权限访问</div></td>
          </tr>
          <tr>
            <td height="10"></td>
          </tr>
        </table>
    <div class="clear"></div>
  </div>
</div>
{$=webFoot("default_foot")}]]></tpl_default>
    </item>


3. 打开配置文件 模块\common\config.jtbc

在代码

    <item>

      <name><![CDATA[nuptype]]></name>

      <chinese><![CDATA[.bmp.jpg.gif.png]]></chinese>

    </item>

下面添加

    <item>
      <name><![CDATA[ip-on-off]]></name>
      <chinese><![CDATA[1]]></chinese>
    </item>
    <item>
      <name><![CDATA[ip-on]]></name>
      <chinese><![CDATA[192.168.1.101|192.168.10.*|192.168.10.1]]></chinese>
    </item>


4. 使用说明:


配置文件中参数说明:

ip-on-off 如果为1,则打开IP权限检测功能,如果为0,则关闭IP限制功能

ip-on 此处填写允许访问的ip或ip段格式为192.168.1.101|192.168.10.*|192.168.10.1,

其中可设置允许的单个ip和ip段,ip段格式为,前三位为数据,最后一位为*号.

IP和IP段的数量不限制,顺序不限制,每个中间用英文|隔开即可.

如果ip-on为空,则不允许任何ip访问.


以上已测试过功能正常.

0%