SpringMVC IP权限设计
SpringMVC IP权限设计
public class Const {public static final String SESSION_SECURITY_CODE = "sessionSecCode";public static final String SESSION_USER = "sessionUser";public static final String NO_INTERCEPTOR_PATH = ".*/((login)|(logout)|(code)).*"; //不对匹配该值的访问路径拦截(正则)
<span style="white-space:pre"> </span>public static final String SESSION_SECURITY_IP="127.0.0.1";}
package <span style="font-family: Arial, Helvetica, sans-serif;">com.flf</span><span style="font-family: Arial, Helvetica, sans-serif;">.util;</span>
import java.net.InetAddress;
import java.net.UnknownHostException;import javax.servlet.http.HttpServletRequest;
public class AcquireIp {/*** 获取用户当前请求的IP地址* @param request* @return*/public static String getIpAddr(HttpServletRequest request){ String ipAddress = request.getHeader("x-forwarded-for"); if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){ //根据网卡取本机配置的IP InetAddress inet=null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } ipAddress= inet.getHostAddress(); } } //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15 if(ipAddress.indexOf(",")>0){ ipAddress = ipAddress.substring(0,ipAddress.indexOf(",")); } } return ipAddress; } }
3、配置文件相关代码:在springmvc的配置文件中配置下面一段拦截
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/**/*.html*"/><bean class="com.flf.interceptor.LoginHandlerInterceptor"/></mvc:interceptor></mvc:interceptors>
4、LoginHandlerInterceptor拦截器:
<pre name="code" class="java">package com.flf.interceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.flf.entity.User;
import com.flf.util.Const;
public class LoginHandlerInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request,
<span style="white-space:pre"> </span>HttpServletResponse response, Object handler) throws Exception {
<span style="white-space:pre"> </span>// TODO Auto-generated method stub
<span style="white-space:pre"> </span>String path = request.getServletPath();
<span style="white-space:pre"> </span>//获取用户请求的IP
<span style="white-space:pre"> </span>String requestIp =AcquireIp.getIpAddr(request);
<span style="white-space:pre"> </span>if(path.matches(Const.NO_INTERCEPTOR_PATH)){
<span style="white-space:pre"> </span>return true;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>HttpSession session = request.getSession();
<span style="white-space:pre"> </span>User user = (User)session.getAttribute(Const.SESSION_USER);
<span style="white-space:pre"> </span>if(requestIp!=null && requestIp.equals(Const.SESSION_SECURITY_IP)){
<span style="white-space:pre"> </span>//response.sendRedirect(request.getContextPath()+path);
<span style="white-space:pre"> </span>return true;
<span style="white-space:pre"> </span>}else{
<span style="white-space:pre"> </span>if(user!=null){
<span style="white-space:pre"> </span>return true;
<span style="white-space:pre"> </span>}else{
<span style="white-space:pre"> </span>response.sendRedirect(request.getContextPath()+ "/login");
<span style="white-space:pre"> </span>return false;<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return super.preHandle(request, response, handler);
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>}
}
}
SpringMVC IP权限设计相关推荐
- IP网络设计系列之-局域网设计
[导读]这是ip网络设计系列讲座的最后一部分,讨论园区局域网设计中遇到的一些问题.以太网交换机优越于传统的集线器环境的好处将首先介绍一下.应用虚拟局域网的动机已经同规划和配置虚拟局域网遇到的问题一起进 ...
- 转载:闲话权限设计三层境界
转自: http://www.cnblogs.com/tsoukw/archive/2010/09/27/1836485.html 喜欢金庸的武侠,对他那几部小说也是乐此不疲 拿独孤求败来说,他的剑, ...
- 浅谈权限设计(来自深空老大)
2019独角兽企业重金招聘Python工程师标准>>> By 深空, 2009-09-13 21:45:07 PHPChina的专家版在谈权限设计,苦于没有权限回帖,特发此博文谈谈简 ...
- 基于shiro的权限设计
shiro介绍 Apache shiro是一个权限控制框架,它将安全认证抽取出来,实现用户身份认证,权限授权,加密,会话管理等功能,是一个通用的安全认证框架,而且还可以用于分布式集群.功能如下 1.验 ...
- 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现
上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...
- 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计
Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障.没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要.在Javaweb开发中,有很多权限开发的框架,比 ...
- 权限设计的一些想法和思考
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:cross my.oschina.net/cloudcros ...
- 浅谈OFBiz之权限设计
简介 Apache Open For Business(Apache OFBiz) 是Apache开源的一个经典ERP项目.它提供了一套企业应用,用于集成以及自动化一些企业的"商业流程&qu ...
- RBAC角色权限设计
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
最新文章
- 不用精子就能繁育后代,科学家只用1个卵细胞就培育出健康小鼠,来自上交医学院 | PNAS...
- html5调用手机摄像头,实现拍照上传功能
- pyecharts离线使用说明
- 2015年10月15日学习html基础笔记
- 网站运维技术与实践之服务器监测常用命令
- 安装rpm包命令_编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出...
- 数据库性能优化—分库分表
- uniapp中实现每次点击左侧菜单右边区域都从顶部开始
- 热议 | 深圳中学教师年薪35万,有一半是博士
- 网格系统常用的三种比例
- 【追寻javascript高手之路05】理解事件流
- Linux命令:修改文件权限命令chmod、chgrp、chown详解
- 算法设计与分析课后习题答案
- HDOJ 5142 NPY and FFT 水
- bayaim_今晚打老虎
- Python索引 说明
- android xml pid vid,关于Android机型的pid vid的那些破事儿
- 神马都是浮云!神马浮云是什么意思?-出自小月月
- Microsemi Libero SoC 教程1 (Libero开发环境)
- 个人如何打破部门墙_做事要有霸气