精华内容
下载资源
问答
  • 机器视觉软包装行业质量检测解决方案 一、软包装行业质量检测现状及背景 软包装作为产品包装的一种主要形式,具有外观精美、清洁卫生、成本低廉、使用方便等优点,大量用作食品、药品、日用品等产品的外包装。...

    机器视觉软包装行业质量检测解决方案

        一、软包装行业质量检测现状及背景
        软包装作为产品包装的一种主要形式,具有外观精美、清洁卫生、成本低廉、使用方便等优点,大量用作食品、药品、日用品等产品的外包装。软包装材质多样、对印刷精度要求高的同时对检测速度也有很高要求。国内软包装印刷工艺以凹印为主,配以复合、分切、制袋等印后处理。印刷过程中可能会产生各种各样的印刷缺陷,如脏版、糊字、色差、套印不准、脏点、蚊虫、异物、漏印、飞墨、刀丝、拖墨等缺陷。由于软包装的重要性和其独特的高速印刷特点,同时随着生活水平的提高,对软包装的印刷质量提出了更高的要求,如何控制好软包装印品的质量一直是困扰所有软包装印刷企业的难题。目前软包装印刷质量控制主要包括过程控制和结果控制两方面。在凹印生产过程中,过程控制和结果控制两方面缺一不可,它们既是在印刷企业中进行质量改进的关键点,也是制定质量改进措施的基础。
        印中控制是对凹印的每一个工艺环节进行规范化、标准化、数据化的作业,采取一定的质量标准来建立质量控制预防机制。主要关注的是预防连续费或大量废,防止材料的浪费。而可能导致大量废的缺陷是套印、刀丝、色差、大量飞墨。目前几乎所有的凹印机有配有电脑套印控制系统,同时借助静止画面及频闪灯通过人工观察刀丝、飞墨、拖尾、毛刺、漏印、咬色、异物、堵版等缺陷。印后控制是印刷完后对印品整体质量的检查及控制,主要包括复卷检查、分切检查、制袋后检查。目前的主要方式也是借助频闪灯通过人工观察缺陷。然而由于凹印机对张力波动的控制是很有限的,电脑套印控制系统不能完全保证印刷过程套印完全稳定,而静止画面及频闪灯是典型的抽检模式,同时人工观察更是存在主观及疏忽风险。通过我们的市场调查及客户反馈,软包装印刷企业主要需要检测印刷过程中的套印、偏色、脏点、刀丝、蚊虫、异物等典型缺陷。其检测需求大致如下表,同时我们注意到软包装印刷的质量要求存在越来越高的趋势。
        二、软包装印刷品缺陷介绍

                    漏印       脏点      划痕      划伤     套印不良   褶皱
        三、软包装行业质量检测解决方案

        1、在线检测解决方案

        A、在印中环节做质量全检, 防止连续废, 减少原材料浪费, 降低成本;
        B、实现高运行速度下的高精度检测,匹配印刷机高速化趋势;
        C、可对生产线进行全面的质量管理与质量报告,助力企业工艺质量提升。
        2、离线检测解决方案

        A、在印后环节做质量终检, 确保包装印刷企业对下游客户的质量承诺;
        B、可与复卷机、分切机等多种印后设备配套,应用范围广;
        C、能满足任意幅宽及精度的检测需求。
        3、在线检离线剔解决方案

        A、实时监控印刷质量,及时处理重大缺陷,有效控制废品率,降低生产成本;
        B、生产和终检同时进行,引入缺陷筛选环节提高效率,高速剔废平台保证效率。


    展开全文
  • 包装行业ERP解决方案

    千次阅读 2011-11-05 11:29:17
    全球经济一体化使包装企业的竞争日益剧烈,建立一个有效的ERP管理系统,可以使企业拥有比竞争对手更严谨的业务管理和控制,可以比竞争对手更快速地获得业务信息,掌握了这些信息企业就可以更准确、更及时的进行判断...
    转自:http://sapper.blog.sohu.com/188708288.html
    
    http://sapper.blog.sohu.com/entry/7198917/
    全球经济一体化使包装企业的竞争日益剧烈,建立一个有效的ERP管理系统,可以使企业拥有比竞争对手更严谨的业务管理和控制,可以比竞争对手更快速地获得业务信息,掌握了这些信息企业就可以更准确、更及时的进行判断和决策,进而可以得到比竞争对手更快速的运做效率和经济效益,获得领先和超越对手的竞争优势。


    一、行业背景
    包装企业是以产品产量、质量、生产成本三要素为主要对象进行竞争。进入21世纪,产品的市场竞争已转变为包装企业对市场响应速度,产品质量和技术创新能力的竞争。包装企业已进入个性化、短周期、小批量、交货快、零库存的敏捷制造时期,对信息的收集、交流、反应和决策速度将成为决定企业竞争能力的关键因素。
    全球经济一体化使包装企业的竞争日益剧烈,建立一个有效的ERP管理系统,可以使企业拥有比竞争对手更严谨的业务管理和控制,可以比竞争对手更快速地获得业务信息,掌握了这些信息企业就可以更准确、更及时的进行判断和决策,进而可以得到比竞争对手更快速的运做效率和经济效益,获得领先和超越对手的竞争优势。

    二、行业特性
    1、产品的市场竞争主要表现为包装企业对市场响应速度,产品质量和技术创新能力的竞争;
    2、包装企业已进入个性化、短周期、小批量、交货快、零库存的敏捷制造时期,对信息的收集、交流、反应和决策速度将成为决定企业竞争能力的关键因素;
    3、包装行业是一个变化迅速的产业,要求高度重视市场调研和产品设计;
    4、包装行业所有产品的管理包括样式编号、颜色、规格,而且同品种的标示规格、方法、标示规格的数量都不相同;
    5、包装企业的成本中原料所占比重较高,原料采购、储运、配用和工艺设计要求高;

    三、存在的主要问题
    1、由于包装行业的特殊性,包装企业生产大多按订单生产、订单批次生产、小批量生产等不同要求的订单组合生产,业务部门与生产部门信息不共享、信息传递滞后,业务部门订单发生变化,如:数量增加、减少、取消合同等的信息不能快速、有效的传到车间,车间生产计划调整滞后或生产混乱。

    2、由于缺少历史数据、市场需求分析数据作为决策依据,包装企业生产预测常常是依靠经理人的经验来判断,导致生产无法适应市场需求的波动,影响企业资金周转速度。

    3、包装企业订单供料加工生产模式,其来料加工形式多样:有的提供成料,有的不提供成料。由于成品与原料消耗控制缺乏手段,往往由于供货不足,生产与业务、业务与 客户信息传递慢,导致生产中途补料不及时、结算与交货等带来多种困难。

    4、包装企业车间生产通常是按订单交期进行排产,国内、国外定单要同时生产,在具体安排生产时,要按样式、尺寸等不同数量组织生产;在定单集中、形式多、批量小等情况下,排产难做到科学合理,生产丢单现象经常发生。

    5、包装企业生产过程中,经常出现短缺材料,采购又一时来不及情况,通常采用从另一个订单中借材料进行解决,补材料与借材料缺乏跟踪控制有效手段。

    6、供货商通常掌握在采购业务人员手中,供货商选择的不透明,不可避免出现暗箱操作,企业采购不到高质量、低价格的材料,包装产品成本偏高没有价格竞争优势。

    7、包装企业生产,成品的种类数量较多,对于库存物料信息,管理人员不能及时掌握,库存物料查找困难,难以满足现代包装企业管理需要。

    8、包装变化多样,由于不能及时得到市场前端的来自消费者的需求信息、竞争对手信息等,企业领导对包装市场流行款式、流行颜色及流行面料难以做出正确市场预测。

    9、包装企业一般通过直销方式销售,由于生产厂与商家信息传递不畅通、信息不能共享,信息传递慢且容易失真等,没有准确及时的销售趋势分析、库存分析、采购分析和财务分析等数据,企业领导难以决策。

    10、包装企业销售管理,销售部门搞不清仓库、分支机构/中转仓库的准确库存分布,常会出现某种样式、规格产品在某地销售断货时,销售部门不能合理调配货物资源而丢失商机。

    11、对客户信用控制不够严谨有效,放货随意,风险意识不强;企业与客户之间业务往来存在对不清 账现象,很多企业的应收账款超过销售收入的30%,拖欠时间长,应收账款数额巨大,呆坏账现象普遍,资金占压严重。

    12、包装产品外销定单确定后,业务人员无法迅速知道完成定单还需采购多少原料、多长时间完成采购;合同在厂内、厂外加工过程中,业务人员无法监控合同执行完成情况。



    四、NSSERP解决方案
    1、工程资料管理
    包装行业解决方案的工程数据管理是帮助用户建立和维护物料分类、物料编码;建立和维护BOM;建立和维护生产线、工作中心、工序、工艺路线;建立和维护工厂日历等物流和制造过程所使用的基础数据。这些数据是供销存、计划、制造、成本核算等系统应用的先决条件,对整体系统准确性、效率性运行起着非常关键的作用。

    2、销售管理
    包装行业解决方案的销售管理为企业提供销售环节的全过程管理,帮助建立完整的客户档案管理、建立企业的完整的销售组织(包括内部组织、外部销售组织),建立通用的销售报价和客户专用的销售报价,建立从销售合同、销售订单、客户信用管理、销售交货开单、销售出库的业务处理过程。
    销售管理能够帮助企业各级管理人员实时了解客户订单情况,产品受订情况,及时了解产品受订金额,企业可以从产品受订情况指导企业生产计划制定和排产;可以帮助企业及时了解产品热点,畅销产品、滞销产品,及时了解产品预期的毛利润,通过畅销和滞销产品趋势分析,指导和影响企业的产品研发和制造策略。

    3、计划管理
    包装行业解决方案的计划管理系统可同时满足以销定产、快速响应市场需求的计划和以预测进行计划生产相结合等多种计划方式。将市场需求通过高效完整的计划系统,可快速地分解成可以执行的采购任务、生产任务和委外加工任务,以物料供应平衡为主、产能平衡为辅两个角度,保证了市场需求的可执行性,缩短了产品交货周期,保证了销售、生产、委外和采购的高效运营。

    4、采购管理
    包装行业解决方案的采购管理实现采购申请、采购订单管理、来料检验、材料入库、外购结算的整体流程应用,结合供应商供货信息、供应商价格管理、供应商配额管理以及供应商评估等一系列功能,帮助企业建立统一的供应商管理平台,从质量、价格、交期、交货准时率、服务水平等方面对供应商进行全面管理。从而通过有价格优势的采购,确保企业的利润,提供实现物流和资金流的全过程双向控制和跟踪,实现完善的企业物资供应信息管理。

    5、车间管理
    包装行业解决方案车间管理包括:车间管理(生产工单)、车间管理(日计划)。为企业提供生产任务单确认下达、物料配套检查、投料与领料、生产检验与汇报、到产品入库、任务单结案全过程管理,提供生产任务安排、生产投料管理、生产任务变更与改制、车间物料管理等业务管理功能,协助企业有效监督与控制生产。

    6、库存管理
    库存管理指狭义上的库存管理,不包含采购、销售、制造等模块相关的物流管理。主要功能包括库存基本资料管理;库存调拨、盘点、报废管理;部门领用物料管理;例外收退货管理;装箱体单管理;车辆过磅管理等。

    7、成本管理
    包装行业信息化解决方案重视成本管理,成本管理子系统是实现闭环控制的重要环节。成本管理的作用是系统地控制和统计成本的发生,并运用预测、计划、控制、核算、分析、考核等方法,对构成产品成本的各种因素及影响产品成本的各个经营环节实施管理,以达到降低成本,提高经济效益为目的。

    五、应用效益
    1、 订单快速响应
    由于包装行业的特殊性,企业完全是按照客户订单生产,NSSERP系统能够在接到客户订单时,快速进行成本和利润分析,平衡客户要求价格和企业的报价,在短短几个小时内便能够向客户报价,大大提高订单的响应速度;

    2、畅通的信息流
    系统能够有效地让业务部门与生产部门信息共享、加速信息传递,全面的信息让MRP子系统更好地按订单编制产品及各阶半成品的生产计划与材料的采购计划。可更好的适用于计划型生产与接单式生产模式,大大提高了工作的效率及准确性,减少不必要的损失。

    3、应收款跟踪管理
    针对包装行业存在订单小,但数目多的问题,每单结算金额不大,客户特别多,NSSERP系统自动的帐龄分析和结构化的帐目,让管理人员对帐目一目了然,显著地提高了收款平均速度,大大地减少了呆帐坏帐。

    4、强化库存管理
    库存管理方面,由于采用统一编码和各部门协同使用,使得物流帐非常清晰和准确,成品库存准确率、材料的准确率显著提高,产品与各种物料监控管理,避免了传统手工作业效率低,信息不及时,无法支持进一步管理分析的问题;

    5、财务成本控制,快速生成报表
    基础数据的来源大部分都是由各部门作业人员在日常业务中录入系统,期末由系统自动收集相关信息并进行汇总。NSSERP系统使产品成本、财务结算速度加快,产品成本计算、财务结算仅需几分钟,并提供快速生成财务报表的功能。真正的使财务人员,从资料的收集及成本分摊等繁杂的手工作业中解脱出来,更快、更准确的为管理者提供成本信息,提升企业的管理决策水平;

    6、业务流程化管理
    系统的高度集成化、数据标准化,让企业的业务流程得到明显改善、业务效率明显提高,有效跟踪业务进行状况,加速业务流转速度,实现企业运行在优化过的业务流程上!
    展开全文
  • 使用JWT微服务的登录方案

    万次阅读 多人点赞 2018-03-06 21:08:37
    然后可以使用共享存储共享,比如redis共享,这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了,所以这里使用基于令牌的方式登录。...

    由于微服务大都是分布式的,需要几台服务器部署,当一个用户在其中一台服务器登录后,传统的方式是session保存其登录信息,然后可以使用共享存储共享,比如redis共享,这种方案的缺点在于共享存储需要一定保护机制,因此需要通过安全链接来访问,这时解决方案的实现就通常具有相当高的复杂性了,所以这里使用基于令牌的方式做登录。

    JWT简介

    简介网上都有,下面是摘抄的一部分,做做笔记。。。

    JWT(JSON WEB TOKEN)是一个非常轻巧的规范,这个规范允许我们使用jwt在客户端和服务器之间传递安全可靠的信息。
    JWT由3个部分组成,分别是头部、载荷、签名。
    头部部分
    {
    “alg”: “HS256”,
    “typ”: “JWT”
    }
    alg描述的是签名算法。

    载荷部分
    {
    “iss”: “发行者”,
    “sub”: 主题”,
    “aud”: “观众”,
    “exp”:”过期时间”,
    “iat”:”签发时间”
    以下可以添加自定义数据
    “id”:”1”,
    “nickname”:”昵称”
    }
    Base64算法是可逆的,不可以在载荷部分保存用户密码等敏感信息。如果业务需要,也可以采用对称密钥加密。

    签名部分
    HMACSHA256(Base64(Header) + “.” + Base64(Payload), secret)
    签名的目的是用来验证头部和载荷是否被非法篡改。
    验签过程描述:读取Header部分并Base64解码,得到签名算法。根据以上方法算出签名,如果签名信息不一致,说明是非法的。

    为什么使用JWT

    前后端分离

    以前的传统模式下,后台对应的客户端就是浏览器,就可以使用session+cookies的方式实现登录,但是在前后分离的情况下,后端只负责通过暴露的RestApi提供数据,而页面的渲染、路由都由前端完成。因为rest是无状态的,因此也就不会有session记录到服务器端。

    传统方式带来的安全性问题

    在前后端分离通过Restful API进行数据交互时,如何验证用户的登录信息及权限。在原来的项目中,使用的是最传统也是最简单的方式,前端登录,后端根据用户信息生成一个token,并保存这个 token 和对应的用户id到数据库或Session中,接着把 token 传给用户,存入浏览器 cookie,之后浏览器请求带上这个cookie,后端根据这个cookie值来查询用户,验证是否过期。

    但这样做问题就很多,如果我们的页面出现了 XSS 漏洞,由于 cookie 可以被 JavaScript 读取,XSS 漏洞会导致用户 token 泄露,而作为后端识别用户的标识,cookie 的泄露意味着用户信息不再安全。尽管我们通过转义输出内容,使用 CDN 等可以尽量避免 XSS 注入,但谁也不能保证在大型的项目中不会出现这个问题。

    在设置 cookie 的时候,其实你还可以设置 httpOnly 以及 secure 项。设置 httpOnly 后 cookie 将不能被 JS 读取,浏览器会自动的把它加在请求的 header 当中,设置 secure 的话,cookie 就只允许通过 HTTPS 传输。secure 选项可以过滤掉一些使用 HTTP 协议的 XSS 注入,但并不能完全阻止。

    httpOnly 选项使得 JS 不能读取到 cookie,那么 XSS 注入的问题也基本不用担心了。但设置 httpOnly 就带来了另一个问题,就是很容易的被 XSRF,即跨站请求伪造。当你浏览器开着这个页面的时候,另一个页面可以很容易的跨站请求这个页面的内容。因为 cookie 默认被发了出去。

    性能问题

    如果将验证信息保存在数据库中,后端每次都需要根据token查出用户id,这就增加了数据库的查询和存储开销。

    Session方式存储用户id的最大弊病在于Session是存储在服务器端的,所以需要占用大量服务器内存,对于较大型应用而言可能还要保存许多的状态,一般还需借助nosql和缓存机制来实现session的存储,如果是分布式应用还需session共享。

    兼容问题

    在移动端app里,或者是前后端分离的架构中,用户访问的是前端的web server(如 node.js),前端的渲染,ajax请求都是由web server完成的,这里就跟传统的不一样了,用户不是直接访问后台应用服务器的,这时候用cookie+session就比较麻烦,问题在于开发繁琐、安全性和客户体验差、有些前端技术不支持cookie(如微信小程序)

    带来的好处

    简洁,可以通过URL, POST 参数或者在 HTTP header 发送,因为数据量小,传输速度快。

    自包含,负载中包含了所有用户所需要的信息,避免了多次查询数据库,服务端也不需要存储 session 信息,做到了服务端无状态。

    JWT方式将用户状态分散到了客户端中,可以明显减轻服务端的内存压力。除了用户id之外,还可以存储其他的和用户相关的信息,例如该用户是否是管理员、用户所在的分组等。

    JWT能轻松的实现单点登录,因为用户的状态已经被传送到了客户端。

    支持移动设备,支持跨程序调用,Cookie 是不允许垮域访问的,而 Token 则不存在这个问题。

    因为有签名,所以JWT可以防止被篡改

    实操

    前一段时间在微服务中做用户服务的时候使用到了jwt+redis的登录方案构思了一下登录流程,也不知道合不合理。。仅供参考

    • 前端服务器收到用户登录请求,传给后台zuul网关。

    • zuul网关把请求分发到用户服务里进行身份验证。

    • 后台用户服务验证通过,然后从账号信息抽取出id、nickName、login_method、login_time等基本信息(这些信息根据自己的需要定义)组成payload,进而组装一个JWT,把JWT放入redis(因为退出的时候无法使jwt立即作废,所以使用保存在redis中,退出的时候delete掉就可以了,鉴权的时候加一层判断jwt是否在redis里,如果不在则证明jwt已过期作废),然后包装到json数据返回到前端服务器,这就登录成功了。

    • 前端服务器拿到 JWT,进行存储(可以存储在缓存中,也可以存储在数据库中,如果是浏览器,可以存储在 localStorage 中)在后续请求中,在 HTTP 请求头中加上 JWT(前端在每次请求时将JWT放入HTTP Header中的Authorization位,解决XSS和XSRF问题)。

    • 登录后,再访问其他微服务的时候,前端会携带jwt访问后台,后台的zuul网关添加拦截器来校验 JWT,验签通过后,进去相应的服务,然后返回相应资源和数据就可以了。

    下面就来写代码。。

    首先引入依赖

            <dependency>
                <groupId>com.auth0</groupId>
                <artifactId>java-jwt</artifactId>
                <version>3.2.0</version>
            </dependency>

    然后就是生成jwt的工具类,传入一个claims即可

    public class JwtHelper {
        //设置发行人
        private static final String ISSUER = "user";
    
        public static String genToken(Map<String, String> claims){
            try {
            //这里的JwtRsaUtil是自定义的另一个工具类,用于从jks证书文件中提取公钥和私钥,进行RSA加密解密
                JwtRsaUtil jwtRsaUtil = new JwtRsaUtil("/*****.jks", "*****".toCharArray());
                //获取秘钥对
                KeyPair keyPair = jwtRsaUtil.getKeyPair();
                //然后就是设置加密算法了,可以选择许多不同的加密算法,这里使用的RSA256非对称加密,安全性更好。如果为了方便,也可以使用HS256对称加密
                Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) keyPair.getPublic(), (RSAPrivateKey) keyPair.getPrivate());
                //开始构建JWT,这里可以设置很多信息,我只设置了发行人和过期时间
                JWTCreator.Builder builder = JWT.create().withIssuer(ISSUER).withExpiresAt(DateUtils.addDays(new Date(), 1));
                //然后把传入的claims放进builder里面,这里使用了java8的方法引用,也可以说是lambda的简化写法吧,本来写的lambda表达式,然后idea提示这里还可以简化,然后就变成这样子了。。
                claims.forEach(builder::withClaim);
                //签名之后返回
                return builder.sign(algorithm);
            } catch (IllegalArgumentException e) {
                throw new RuntimeException(e);
            }
        }
        //验签方法
        public static Map<String, String> verifyToken(String token)  {
            Algorithm algorithm = null;
            try {
                KeyPair keyPair = JwtRsaUtil.getInstance().getKeyPair();
                algorithm = Algorithm.RSA256((RSAPublicKey) keyPair.getPublic(), (RSAPrivateKey) keyPair.getPrivate());
            } catch (IllegalArgumentException e) {
                throw new RuntimeException(e);
            }
            JWTVerifier verifier = JWT.require(algorithm).withIssuer(ISSUER).build();
            DecodedJWT jwt =  verifier.verify(token);
            Map<String, Claim> map = jwt.getClaims();
            Map<String, String> resultMap = Maps.newHashMap();
            map.forEach((k,v) -> resultMap.put(k, v.asString()));
            return resultMap;
        }
    }

    这是解析jks文件的工具类

    public class JwtRsaUtil {
    
        private String keyStoreFile;
        private char[] password;
        private KeyStore store;
        private Object lock = new Object();
    
        private static JwtRsaUtil instance = null;
    
        public static JwtRsaUtil getInstance() {
            synchronized (JwtRsaUtil.class) {
                if (instance == null) {
                    synchronized (JwtRsaUtil.class) {
                    //这里是jks文件路径和密码
                        instance = new JwtRsaUtil("/******.jks", "******".toCharArray());
                    }
                }
                return instance;
            }
        }
    
        public JwtRsaUtil(String _jksFilePath, char[] password) {
            this.keyStoreFile = _jksFilePath;
            this.password = password;
        }
    
        public KeyPair getKeyPair() {
            return getKeyPair("*******", this.password);
        }
    
        public KeyPair getKeyPair(String alias, char[] password) {
            try {
                synchronized (this.lock) {
                    if (this.store == null) {
                        synchronized (this.lock) {
                            InputStream is = this.getClass().getResourceAsStream(keyStoreFile);
                            try {
                                this.store = KeyStore.getInstance("JKS");
                                this.store.load(is, this.password);
                            } finally {
                                if (is != null) {
                                    try {
                                        is.close();
                                    } catch (Exception e) {
                                    }
                                }
                            }
                        }
                    }
                }
                RSAPrivateCrtKey key = (RSAPrivateCrtKey) this.store.getKey(alias, password);
                RSAPublicKeySpec spec = new RSAPublicKeySpec(key.getModulus(), key.getPublicExponent());
                PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
                return new KeyPair(publicKey, key);
            } catch (Exception e) {
                throw new IllegalStateException("Cannot load keys from store: " + this.keyStoreFile, e);
            }
        }
    }

    至于生成jks文件可以使用keytool,网上很多资料,有个问题就是当初使用的大小写混合的秘钥,然后导到程序里无法解析,所以现在秘钥用的全小写。。

    然后在业务逻辑里,从数据库中查出用户基本信息后,调用上面写的工具类,生成一个jwt

            // 生成JWT
            Map<String, String> claims = new HashMap<>();
            claims.put("id", user.getId()+"");
            claims.put("nickName", user.getNickName());
            claims.put("login_method", userSocial.getLoginMethod());
            claims.put("openId", userSocial.getUnionId());
            claims.put("ts", Instant.now().getEpochSecond()+"");
            String jwtToken = JwtHelper.genToken(claims);
            // 缓存至redis
            renewToken(jwtToken, user.getId());
            return jwtToken;

    保存到redis中

        private void renewToken(String token, int id) {
            redisTemplate.opsForValue().set(id, token);
            redisTemplate.expire(id, 30, TimeUnit.MINUTES);
        }

    同理,退出登录的时候就直接delete掉就可以了

        public void invalidate(String token) {
            Map<String, String> map = JwtHelper.verifyToken(token);
            redisTemplate.delete(map.get("id"));
        }

    运行效果

    {“code”:0,”msg”:”登录成功!”,”data”:”eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJuaWNrTmFtZSI6IjEyMyIsIm9wZW5JZCI6Im9pWnFGd1d6ZlU2U05kZXRNakxhdkZMYXpPYmciLCJsb2dpbl9tZXRob2QiOiJ3ZWNoYXQiLCJpc3MiOiJzdW5TcHJpbmdfdXNlciIsImlkIjoiMjQiLCJleHAiOjE1MjA0MjczODEsInRzIjoiMTUyMDM0MDk4MSJ9.K-U9zakvABRTh1LmOPke_7zKH9qCEUC3CkqeSNknBv-6orsT87GVZZMJAYxp2wgyGe5EzObONRWaAde-EK2UGMe7yVGANjD5NaPw05d7gjO-2ZbhTOU1dpiTWH5zXXu6mdJUbjVNFwam5oh0qOgAelSKogQCf3pAnSdPAXG85Yc”}

    生成了一段JWT,然后可以base64解码出来信息
    这里写图片描述
    redis里面也缓存了该JWT
    这里写图片描述

    至于通过验签鉴权,调用之前的工具类验签即可

            KeyPair keyPair = JwtRsaUtil.getInstance().getKeyPair();
            String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJuaWNrTmFtZSI6IjEyMyIsIm9wZW5JZCI6Im9pWnFGd1d6ZlU2U05kZXRNakxhdkZMYXpPYmciLCJsb2dpbl9tZXRob2QiOiJ3ZWNoYXQiLCJpc3MiOiJzdW5TcHJpbmdfdXNlciIsImlkIjoiMjQiLCJleHAiOjE1MjA0MjczODEsInRzIjoiMTUyMDM0MDk4MSJ9.K-U9zakvABRTh1LmOPke_7zKH9qCEUC3CkqeSNknBv-6orsT87GVZZMJAYxp2wgyGe5EzObONRWaAde-EK2UGMe7yVGANjD5NaPw05d7gjO-2ZbhTOU1dpiTWH5zXXu6mdJUbjVNFwam5oh0qOgAelSKogQCf3pAnSdPAXG85Yc";
            Map<String, String> map = JwtHelper.verifyToken(token);
            System.out.println(map);

    然后测试运行,能解析出payload,由于使用了电子证书,所以未泄露秘钥的情况下,payload是可信的、无法篡改的。
    这里写图片描述

    当然,如果RSA秘钥不正确
    这里写图片描述
    就会抛出异常,验签不成功

    展开全文
  • Palletier是ErhanBaltacioğlu在其论文中提出的分销商货盘包装问题解决方案的Python实现。分销商的三维货盘包装问题:可以在此处找到基于人类智能的启发式方法。 免费软件:MIT许可证 文档: : 。 特征 去 学分 ...
  • 1、首先要了解企业微信代运营的...做方案就是要具体到细节,包括账号初期的搭建、内容体系的完善、活动策划的流程、文案的精编、数据分析等,运营是很复杂的一件事,如果想做好的话,建议最好找公司微信公众号...

    这里写图片描述

      1、首先要了解企业做微信代运营的目的。这个目的必须明确,要不然工作就没法干。

      2、分析同行或相关行业做的不错的帐号。同行是最好的老师,不用试错,照搬照抄就行了,省去试错的时间和成本。

      3、运营微信帐号周期1-2个月。做方案就是要具体到细节,包括账号初期的搭建、内容体系的完善、活动策划的流程、文案的精编、数据分析等,运营是很复杂的一件事,如果想做好的话,建议最好找公司做微信公众号代运营。
      这里写图片描述

      另外,做微信公众号代运营方案的时候,在定位、内容、粉丝、互动等方面要注意以下事项:

      1、定位:企业首先要明确运用微信营销的目的是什么?想取得什么样的效果?主要核心群体对象是谁?根据这些来展开精准营销,进一步对人群画像,对象群体的年龄、爱好、玩微信的时间节点、喜好的营销手法,用换位思考的角度来营销。

      2、内容:微信营销最忌讳的是直白的广告,相信大家对朋友圈的广告都觉得厌烦,那种不断刷屏的方式会适得其反,应该用好的内容吸引对方,感化对方,以软文的形式,内容植入广告,同时能给用户带来价值,让用户乐意接纳和分享。这就需要专业的运营团队,什么样的公司具备大家肯定很明白了。

      3、粉丝:粉丝为王,要像包装打造明星一样去打造企业产品,使得产品人格化,是有温度的产品,客户接受了一个明星就会为明星代言的所有产品买单。同理,如果用户接受了有人格的企业和产品,也会毫无顾虑的为企业买单。

      4、互动:拥有再多的粉丝,没有互动,一切都没用,要建立与消费者粘性关系,时刻关心和爱护用户,随时保持社交,想方设法占用用户的时间,和用户谈恋爱,像对待你的爱人那样对待用户,让企业和产品与用户形成强关系。

      5、分享:做营销的朋友们都知道,最厉害的营销是转介绍,企业微信营销要学会通过一个用户并向他身边的亲朋好友扩散,平均一个人,周边的强关系100个左右,怎样激励用户分享和转介绍扩散,形成病毒式传播是我们持续研究的课题。

      6、成交:成交是我们大部分企业做微信营销的目的,通过内容价值传播,用心去维护好每一个用户,让用户感动,触动到用户心底的那个点,使其产生购买欲望,用户维护好了,成交自然是水到渠成。

      以上就是关于“企业微信代运营方案怎么做”的问题解答,同时也为大家解答了“微信代运营网站有哪些”这个问题了,希望能为大家带来参考。

    展开全文
  • 一年当中大大小小的节日对于我们美业人来讲是借势活动,增加店铺人气的好机会。很多美容美发等美业店铺都在为了怎么能在节日活动中吸引更多的客户而绞尽脑汁,可是往往结果却差强人意。其实相对于如何宣传与执行...
  • 错误原因 shiro包装了request 所有关于multipart请求都被拦截了  需要将request 强转为 MultipartHttpServletRequest 代码如下: @RequestMapping(value = "upload", method = RequestMethod.POST) public ...
  • 在印度,包装是拥有巨大潜力的新兴行业。全面评估印度包装产品总值高达六千五百亿卢布。年增长率预计超过20%....作为一个高效的研发团队,在当今个性化要求的状况下,提供全面人性化的包装方案。  丰富的产品线  
  • 包装模式

    千次阅读 2016-05-30 15:08:03
    装饰模式就是将某个类重新包装一下,使它比原来更“漂亮”,或者在功能上更强大,但是原来的这个类的使用者不应该感受到这个被装饰前后有什么不同,装饰模式是继承关系的一个替代方案。 ②装饰模式结构 ...
  • JS 异步编程六种方案

    万次阅读 多人点赞 2019-06-28 11:15:45
    答案是异步操作,异步是指可能比较长时间才有结果的才,例如网络请求、读取本地文件等 1.Promise的三种状态 Pending----Promise对象实例创建时候的初始状态 Fulfilled----可以理解为成功的状态 Rejected...
  • 前端异步(async)解决方案(所有方案)

    万次阅读 多人点赞 2019-04-15 22:40:59
    工具方案 工具方案大致分为以下5个: Promise gengerator函数 async await node.js中 nextTick setImmidate 第三方库 async.js 下面针对每一个详细说明应用: 1.Promise(重点) (1).Promise的含义和发展: 含义:...
  • 酒业推广方案

    千次阅读 2017-02-26 03:06:28
    丰谷市场营销方案实施说明书 1 第一章启动 4 1.1 丰谷品牌建设 4 1.2 市场分析 4 1.2.1 对消费者各年龄层进行分析 4 1.2.2 对消费决策过程进行分析 5 1.2.3 对消费者接受产品场景进行分析 5 1.2.4 对消费场景进行...
  • 分布式事务解决方案FESCAR

    千次阅读 2019-01-15 19:57:22
    但是对于技术选型而言,还是希望学习下BAT这种体量的公司用的是什么解决方案,恰巧在查阅资料选型时,阿里开源了FESCAR,开源当天就提了几个issue,一个是有些小疑问,还有就是,想看看这个项目遇到问题时维护者是否...
  • 撰写项目的解决方案要点解析

    万次阅读 多人点赞 2018-12-12 10:23:55
    我基本上都是在方案提交前一两天接到写方案的任务,而我自己的事情一般又比别人多一点,也不能不,只好心里大骂一句,骂完后就打电话搞清楚别人的要求,边问就边构思整个方案的推导思路和结构提纲。 因为你不敢让...
  • Android组件化之终极方案

    万次阅读 多人点赞 2017-09-21 21:27:39
    那么如果解决这些问题呢?我想大多数Android开发者都能想到这个办法。如果你把开源的三方库当做一个功能组件的话,那么很...难道你会下载它的源代码吗,应该很少有人会这样吧。那么让我们看看我们是怎么引入三方库的:
  • java技术方案

    千次阅读 2019-04-03 15:41:53
    1. 增强一个java类中的某个方法的三种方法: ...装饰者方式 : 在IO中应用最多,包装的对象和被包装的对象都要实现相同的接口;获得被包装对象的引用. 缺点: 如果接口中方法比较多,增强的方法少,其他的功能方法需要原...
  • 同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望。 MMM 在2015年之前,美团点评(点评侧)长期使用MMM(Master-Master replication manager for MySQL)数据库...
  • iOS组件化方案对比

    千次阅读 2018-09-28 17:55:24
    背景 随着公司业务的不断发展,项目的功能越来越复杂,各个业务代码耦合也越来越多,代码量也是急剧增加,传统的MVC或者MVVM架构已经无法高效的管理工程代码,因此需要...市场上的方案方案一、url-block 这是...
  • 然后才把比对结果包装为ES Node响应对象返回到ES查询节点,在查询节点内部完成相似度的排序和取TopN操作,最终返回给客户端。这个过程如上图所示,其中为了使线看起来没那么多,C++ 1:N的结果返回到ES Node的箭头只...
  • 智慧农业技术解决方案

    千次阅读 2020-06-23 16:03:24
    技术方案 设计思路 构建一体化业务支撑平台,形成农业产业体系 国家“十二五”规划中明确提出,将完善现代农业产业体系作为“十二五”的重点建设任务,因此,智慧农业的建设也应以建设一体化的农业产业...
  • 在Android所有系统自带的控件当中,ListView这...遇到这个问题时,不少人在网上搜索找到了相应的解决方案,但是真正深入理解这个问题出现的原因并对症解决的人恐怕还并不是很多。那么今天我们就来具体深入分析一下ListV
  • 深入浅出 JS 异步处理技术方案

    万次阅读 热门讨论 2018-01-02 00:00:00
    本文来自作者 icepy 在 GitChat 上分享 「深入浅出 JS 异步处理技术方案」,「阅读原文」查看交流实录。「文末高能」编辑 | 哈比为什么要异步“当我们在星巴克买咖啡时,假设有 100 个人在排队,也许咖啡的下单...
  • 数据集成解决方案

    千次阅读 2020-07-30 17:35:18
    数据集成解决方案一 . 业务背景二. 数据集成需要解决的问题三. 业内常见解决方案及痛点四. 我们的解决方案-Dlink 一 . 业务背景 随着云计算的普及和大数据时代的到来,如何让各种数据源中的种类丰富的数据高效上云,...
  • localStorage兼容方案实现

    千次阅读 2015-09-18 10:17:59
    2、 你需要一个兼容IE系列的本地存储方案(不考虑低版本IE的请飘过或直接看二次包装) 兼容方案效果:  所有主流浏览器支持以下方法和属性:  window.localStorage 的 getItem/setItem/removeItem/clear/key ...
  • 前言在使用hadoop集群的时候,所有的任务都是最终以...这些Application跑完之后,这些信息在jobHistory中就可以看了,可以说hadoop在这方面得真的非常完整.但是完善归完善.但是jobHistory可以说是一种"事后分析
  • 前言在很多时候,我们会碰到数据融合的需求,比如说原先有A集群,B集群,后来管理员认为有2套集群,数据访问不方便,于是设法将A,B集群...本文给大家介绍另外一种解决方案,ViewFileSystem,姑且可以叫做视图文件系统.大意就
  • 成为跨领域的「解决方案架构师」需要什么素养?

    万次阅读 多人点赞 2018-01-08 00:00:00
    本文来自作者 凯哥 在 GitChat 上分享 「成为跨领域的“解决方案架构师”需要什么素养?」,「阅读原文」查看交流实录。「文末高能」编辑 | 哈比跨领域解决方案架构师的养成在架构师这个职业路线上,笔者理解的...
  • iOS 组件化方案

    千次阅读 2018-04-18 11:22:48
    前言这篇文章主要是我近段时间针对市面上存在的一些组件化方案的调研之后,再经过自己的反思和总结写的,博客中部分文字和图借鉴自下面的博客。各位看官大爷就当做一篇读书笔记来看即可,主要是参考了如下几篇文章,...
  • 由于异步函数是立刻返回的,异步事务中发生的错误是无法通过try-catch来捕捉的,只能采用由调用方提供错误处理回调的方案来解决。 例如Node中常见的 function (err, ...) {...} 回调函数,就是Node中处理错误的...
  • JavaWeb 并发编程 与 高并发解决方案

    万次阅读 多人点赞 2018-09-12 03:41:00
    在这里写写我学习到和自己所理解的 Java高并发编程和高并发解决方案。现在在各大互联网公司中,随着日益增长的互联网服务需求,高并发处理已经是一个非常常见的问题,在这篇文章里面我们重点讨论两个方面的问题,一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,334
精华内容 42,133
关键字:

包装方案怎么做