Java 手动配置某一范围内IP访问 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    说明

    很多的Web系统都经常有这样的需求以保证系统安全,限制IP登录,例如在某个局域网中只允许一定范围内IP登录系统,或者不允许外网访问,

Java 手动配置某一范围内IP访问

    如只允许192.168.24.10---192.168.24.255范围内IP地址访问

    IP地址分类

    在说到关于IP地址的问题时,首先,要了解IP分类,IP一般分为A、B、C、D、E五类,我们常说的192.168.*.*,是属于C类,该类主要适用于小型网络,比如我们学校的局域网。

    IP地址范围从192.168.0.0到192.168.255.255,不包括这两个地址,他们属于保留地址。

    限制示例

    这个实例写在了Struts的Action方法里面,当然也可以拿出来,写在Filter里,这样可以通过简单配置就可以实现禁止客户端访问。

    LoginAction

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    package com.bjpowernode.drp.web.actions;

    import java.util.Arrays;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts.action.Action;

    import org.apache.struts.action.ActionForm;

    import org.apache.struts.action.ActionForward;

    import org.apache.struts.action.ActionMapping;

    import com.bjpowernode.drp.web.forms.LoginActionForm;

    /**

    * 登录Action

    * 负责取得表单数据、调用业务逻辑、返回转向信息

    *

    * @author Administrator

    *

    */

    public class LoginAction extends Action {

    @Override

    public ActionForward execute(ActionMapping mapping, ActionForm. form,

    HttpServletRequest request, HttpServletResponse response)

    throws Exception {

    //取得表单数据

    LoginActionForm. laf=(LoginActionForm)form;

    //取得用户名,密码

    String username=laf.getUsername();

    String password=laf.getPassword();

    //转向对象

    ActionForward actionForward=null;

    //判断用户名,密码是否正确

    if ("admin".equals(username) && "admin".equals(password)) {

    //得到远程客户端IP地址

    String remoteAddr=request.getRemoteAddr();

    //将客户端IP地址以“.”分割为数组remoteAddrs[1]);

    String[] remoteAddrs=remoteAddr.split("\\.");

    //从配置文件中取得IP范围 ,四个数组分别保存的IP地址四部分的上界和下界

    String[] ipOne=request.getSession().getServletContext().getInitParameter("ip-one").split(",");

    String[] ipTwo=request.getSession().getServletContext().getInitParameter("ip-two").split(",");

    String[] ipThree=request.getSession().getServletContext().getInitParameter("ip-three").split(",");

    String[] ipFour=request.getSession().getServletContext().getInitParameter("ip-four").split(",");

    //取得第四部分的上下界

    int m=Integer.parseInt(ipFour[0]);

    int n=Integer.parseInt(ipFour[1]);

    //判断客户端IP地址是否在设置范围内

    if (ipOne[0].equals(remoteAddrs[0]) && ipTwo[0].equals(remoteAddrs[1]) && ipThree[0].equals(remoteAddrs[2])) {

    for(int i=m;i<=n;i++) {

    if (Integer.parseInt(remoteAddrs[3])==i) {

    //登录成功

    request.getSession().setAttribute("user", username);

    actionForward= mapping.findForward("success");

    }

    }

    actionForward= mapping.findForward("ipError");

    }

    }else {

    //登录失败

    actionForward= mapping.findForward("index");

    }

    return actionForward;

    }

    }

    package com.bjpowernode.drp.web.actions;

    import java.util.Arrays;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts.action.Action;

    import org.apache.struts.action.ActionForm;

    import org.apache.struts.action.ActionForward;

    import org.apache.struts.action.ActionMapping;

    import com.bjpowernode.drp.web.forms.LoginActionForm;

    /**

    * 登录Action

    * 负责取得表单数据、调用业务逻辑、返回转向信息

    *

    * @author Administrator

    *

    */

    public class LoginAction extends Action {

    @Override

    public ActionForward execute(ActionMapping mapping, ActionForm. form,

    HttpServletRequest request, HttpServletResponse response)

    throws Exception {

    //取得表单数据

    LoginActionForm. laf=(LoginActionForm)form;

    //取得用户名,密码

    String username=laf.getUsername();

    String password=laf.getPassword();

    //转向对象

    ActionForward actionForward=null;

    //判断用户名,密码是否正确

    if ("admin".equals(username) && "admin".equals(password)) {

    //得到远程客户端IP地址

    String remoteAddr=request.getRemoteAddr();

    //将客户端IP地址以“.”分割为数组remoteAddrs[1]);

    String[] remoteAddrs=remoteAddr.split("\\.");

    //从配置文件中取得IP范围 ,四个数组分别保存的IP地址四部分的上界和下界

    String[] ipOne=request.getSession().getServletContext().getInitParameter("ip-one").split(",");

    String[] ipTwo=request.getSession().getServletContext().getInitParameter("ip-two").split(",");

    String[] ipThree=request.getSession().getServletContext().getInitParameter("ip-three").split(",");

    String[] ipFour=request.getSession().getServletContext().getInitParameter("ip-four").split(",");

    //取得第四部分的上下界

    int m=Integer.parseInt(ipFour[0]);

    int n=Integer.parseInt(ipFour[1]);

    //判断客户端IP地址是否在设置范围内

    if (ipOne[0].equals(remoteAddrs[0]) && ipTwo[0].equals(remoteAddrs[1]) && ipThree[0].equals(remoteAddrs[2])) {

    for(int i=m;i<=n;i++) {

    if (Integer.parseInt(remoteAddrs[3])==i) {

    //登录成功

    request.getSession().setAttribute("user", username);

    actionForward= mapping.findForward("success");

    }

    }

    actionForward= mapping.findForward("ipError");

    }

    }else {

    //登录失败

    actionForward= mapping.findForward("index");

    }

    return actionForward;

    }

    }

最新文章