精华内容
下载资源
问答
  • 令牌

    2008-12-11 11:44:00
    令牌分为:质询/响应令牌和时间令牌令牌有点像一个小计算器,粗略一看也有点像汽车的遥控器,所有的令牌差不多都有一个处理器,一个液晶屏和一个电池,有些令牌还有供用户输入信息的小键盘和一个时钟。每个牌都...

    令牌分为:质询/响应令牌和时间令牌;

         令牌有点像一个小计算器,粗略一看也有点像汽车的遥控器,所有的令牌差不多都有一个处理器,一个液晶屏和一个电池,有些令牌还有供用户输入信息的小键盘和一个时钟。每个牌都有一个唯一的种子数,种子可确保令牌输出唯一的代码集。令牌产生的伪随机数称为一次性口令或者一次通行码。

         用户在访问受保护的资源时,输入用户名,令牌上显示的通行码和PIN,而不是口令。每个通行码用一次后就不再使用,大多数系统中,认证系统不直接检验通行码,而是让所信任的认证服务器去做这个事情。

         认证服务器必须知道每个令牌的编程种子数,因为认证系统知道每个特定令牌的种子数后,才能检查访问用户提供的伪随机数是否正确。

         令牌认证是双因素认证或者称2-因素认证,要使用令牌认证必须拥有令牌和PIN,两者缺一不可

    1.质询/响应令牌

           使用令牌时,令牌和认证服务器需要有相同的种子数。种子数是一个适当长度的随机数,不同令牌的种子数不同,令牌中的种子数是不向外公开的,由于令牌没有接口接收质询,所以用户需要看到认证服务器返回的质询后,将其输入到令牌中

    操作过程如:

    使用散列算法而不是加密算法主要以下几个方面的考虑,散列算法容易实现而且需要的CPU资源比加密运算少,这对低当的令牌处理器极为有利,即节省成本又延长电池寿命。

    2时间令牌

     

    在服务器端认证的时侯,如果服务器发现通行码不匹配,这时服务器会向前或者向后调一下时间再一次做散列处理后,进行匹配; 如果还不匹配的话,服务器还会扩大向前或向后调整时间的范围,再做散列处理,进行匹配。如果匹配成功后,服务器记录下令牌与服务器时间的偏移量。向前或者向后调整超过一定范围后就被认为失败.

     

     

    从令牌安全角度来讲,在用户使用令牌的时候需要输入一个PIN,如果输入正确的PIN后会产生一个正确的种子数;输入错的话也不会提示失败,而是给出一个错误的种子数,继续使用。每个令牌都有一种特定的错误种子数,以便服务器跟踪

    转载于:https://www.cnblogs.com/weichuo/archive/2008/12/11/1352679.html

    展开全文
  • 令牌令牌令牌令牌
  • 令牌:以太坊令牌定义
  • 访问令牌与刷新令牌

    2020-05-19 18:47:36
    没有刷新令牌 使用访问令牌发送API请求 如果访问令牌无效,则失败并要求用户重新进行身份验证 使用刷新令牌 使用访问令牌发送API请求 如果访问令牌无效,请尝试使用刷新令牌更新它 如果刷新请求通过,则更新...

    没有刷新令牌

    • 使用访问令牌发送API请求
    • 如果访问令牌无效,则失败并要求用户重新进行身份验证

    使用刷新令牌

    • 使用访问令牌发送API请求
    • 如果访问令牌无效,请尝试使用刷新令牌更新它
    • 如果刷新请求通过,则更新访问令牌并重新发送初始API请求
    • 如果刷新请求失败,请要求用户重新进行身份验证

    令牌被攻击后

    • 客户端缓存用户名和密码,容易受到黑客攻击,如果使用了token机制,就算黑客盗取了用户的access_token与refresh_token,只需重新登录,就可令原来的token失效。
    • 如果访问令牌受到劫持,由于它的存在是短时间的,所以对访问令牌的滥用是控制在一定范围内的。
      如果刷新令牌被劫持,基本上无害的,攻击者需要得到 client_id,secrect_id (通常存储在服务器上),再加上刷新令牌才可以进行操作。


     

    展开全文
  • 获取令牌密码

    2019-02-14 17:56:41
    很好用的获取令牌密码工具
  • COMPLUS | 默认令牌列表 该GitHub存储库包含Complus网络中使用的默认令牌列表。 添加令牌 要请求我们将令牌添加到列表中,请 。 免责声明 注意提交问题并不能保证添加到此默认令牌列表中。 我们不会以任何特定顺序...
  • 令牌环的一个小测试程序,代码用c++书写,可以在上面查看代码。令牌环上传输的小的数据(帧)叫为令牌,谁有令牌谁就有传输权限。如果环上的某个工作站收到令牌并且有信息发送,它就改变令牌中的一位(该操作将令牌...
  • 同步令牌流程同步令牌流程同步令牌流程同步令牌流程同步令牌流程
  • java令牌化翻译自: https://hackernoon.com/implementing-asset-ownership-without-tokens-1d5ae0238590java令牌
    展开全文
  • OAuth令牌

    2021-02-25 09:49:35
    OAuth令牌 OAuth令牌是什么 令牌是OAuth事务的核心。令牌表示的是授权行为的结果:一个信息元组,包括资源拥有者、客户端、授权服务器、受保护资源、权限范围以及其他与授权决策有关的信息 OAuth核心规范不对令牌...

    OAuth令牌

    OAuth令牌是什么

    令牌是OAuth事务的核心。令牌表示的是授权行为的结果:一个信息元组,包括资源拥有者、客户端、授权服务器、受保护资源、权限范围以及其他与授权决策有关的信息

    OAuth核心规范不对令牌本身做任何规定,使得OAuth能广泛的适用于各种部署场景。令牌可以与授权用户关联或者系统中所有用户关联,也可以不代表任何用户,令牌可以有内部结构,也可以是随机的无意义字符串。

    对于令牌存储在共享数据库中的情况,当受保护资源接收客户端令牌后会去用户中查找令牌,令牌本身不携带任何信息。对于非共享数据库情况,可以让令牌本身携带信息,而不用通过请求接口或查询数据库查找令牌信息。

    结构化令牌:JWT

    通过将所有必要的信息放到令牌内部,使得授权服务可以通过令牌本身间接与保护资源沟通。

    JWT的结构

    JSON Web令牌格式,或者叫JWT,提供一种在令牌中携带信息的简单方法,JWT的核心将一个JSON对象封装为一种用于网络传输的格式,通过句点分割令牌字符串,句点符号之间的值是一个经过Base64URL编码的JSON对象

    eyJoeXAioiJKV1QiLCJhbGciOiJub251In0.eyJzdWIioiIxMjM0NTY3oDkwIiwibmFtZSI6IkpvaG4gRG91IiwiYRtaW4iOnRydwv9.
    

    其中第一部分表示

        {
            "type": "JWT",
            "alg": "none"
        }
    

    这是JWT头部,type头告诉处理程序令牌第二部分是何种类型,alg头值为none表示一个未签名的令牌

    JWT声明

    标准JSON Web令牌声明:

    • iss:令牌颁发者,表示令牌由谁创建,在很多OAuth部署中会将它设为授权服务器的URL,该声明是一个字符串
    • sub:令牌主体,表示令牌是关于谁的,在很多OAuth部署中会将它设为资源拥有者的唯一标识。该声明是一个字符串
    • aud:令牌受众,表示令牌接收者,在很多OAuth部署中,它包含受保护资源的URI或者能够接收该令牌的受保护资源。该声明可以是一个字符串数组,如果只有一个值,也可以是一个不用数组包装的单个字符串
    • exp:令牌过期时间戳,他表示令牌将在何时过期,以便部署应用让令牌自行失效,该声明是一个整数,表示自UNIX新纪元(1970.1.1零点)以来的秒数
    • nbf:令牌生效时的时间戳,表示令牌什么时候开始生效,该声明为一个整数,表示UNIX新纪元以来的秒数
    • iat:令牌颁发时的时间戳,表示令牌是何时被创建的,该声明是一个整数,表示自UNIX新纪元以来的秒数
    • jti:令牌的唯一标识符,该令牌的值在令牌颁发者创建的每一个令牌中都是唯一的,为防止冲突,它通常是一个密码学随机值这个值相当于向结构化令牌中加入了一个攻击者无法获取的随机熵组件,有利于防止令牌猜测攻击和重放攻击

    我们也可以在其中添加其他所需字段

    在服务器上实现JWT

    要创建JWT,首先需要一个头部,指明该令牌是JWT且不带签名

        var header = {'type': 'JWT', 'alg': 'none'}
    

    接下来创建一个对象来承载JWT载荷,并根据我们所关心的令牌信息来指定字段

        var payload = {
            iss: 'http://localhost:9001/',
            sub: code.user ? code.user.sub : undefined,
            aud: 'http://localhost:9002/',
            iat: Math.floor(Date.now()/1000),
            exp: Math.floor(Date.now()/1000) + (5 * 60),
            jti: randomstring.generate(8)
        }
    

    将头部和载荷的JSON序列化为字符串,并对他们进行Base64URI编码,以句点符号作为连接符将他们连接起来

        var access_token = base64url.encode(JSON.stringify(header))
        + '.'
        + base64url.encode(JSON.stringify(payload))
        + '.';
    

    资源服务器从传入的令牌中获取信息,执行授权服务器令牌创建流程的逆操作来解析令牌:按照句点符号将字符串分开,得到不同部分,然后将第二部分从Base64URL解码,解析出一个JSON对象

        var tokenParts = inToken.split('.');
        var payload = JSON.parse(base64url.decode(tokenParts[1]));
    

    这样就得到了一个能在应用内进行检查的原生数据结构,我们要确保该令牌来自预期的颁发者;时间戳在合适的范围内;资源服务器是预期的令牌接收者

        if(payload.iss == 'http://localhost:9001/'){
            if((Array.isArray(payload.aud) && __.contains(payload.aud, 'http://localhost:9002/')) || payload.aud == 'http://localhost:9002/'){
                var now = Math.floor(Date.now() / 1000);
                if(payload.iat <= now){
                    if(payload.exp >= now){
                        req.access_token = payload;
                    }
                }
            }
        }
    

    令牌的加密保护:JOSE

    使用JSON对象的签名和加密标准对JWT结构令牌进行加密,这套规范以JSON为基础数据模型,提供了签名(JSON Web签名,或称JWS)、加密(JSON Web加密,或称JWE)以及密钥存储格式(JSON Web密钥,或称JWK)的标准。使用HMAC签名方案的对称签名和验证,以及使用RSA签名方案的非对称签名和验证,使用JWK来存储RSA公钥和私钥

    为了完成繁重的加密任务,我们会使用一个叫JSRSASign的JSON库,这个库提供了基本的签名和密钥管理功能,但不提供加密功能

    使用HS256的对称签名

        var sharedTokenSecret = 'shared OAuth token secret!';
    

    使用这个密钥对令牌签名,修改头部参数,指定签名方法为HS256

        var header = {'type': 'JWT', 'alg': 'HS256'};
    

    JOSE库要求在向签名函数传入数据前先进行JSON序列化(但不进行Base64URL编码),使用JOSE库和共享密钥对令牌进行HMAC签名算法,由于JOSE库的特殊需求,需要传入十六进制字符串形式的共享密钥,其他的库会对密钥格式有不同要求

        var access_token = jose.jws.JWS.sign(header.alg, 
            JSON.stringify(header),
            JSON.stringify(payload),
            new Buffer(sharedTokenSecret).toString('hex'));
    

    头部和载荷还是和之前一样,经过Base64URL编码的JSON字符串,签名被放在JWT格式的最后一个句点符号后面,是经过Base64URL编码的一组字节,签名JWT的整体结构为header.payload.signature

    修改受保护资源,让其能验证令牌的签名

        var sharedTokenSecret = 'shared OAuth token secret!';
    

    首先,解析令牌

        var tokenParts = inToken.split('.');
        var header = JSON.parse(base64url.decode(tokenParts[0]));
        var payload = JSON.parse(base64url.decode(tokenParts[1]));
    

    这一次要用到令牌头部,接下来要根据共享密钥来验证签名,这是我们对令牌内容的首次检查,我们使用的库要求在验证前将密钥转换成十六进制字符串格式

        if(jose.jws.JWS.verify(inToken,new Buffer(sharedTokenSecret).toString('hex'), [header.alg])){
    

    使用RS256的非对称签名

    如上在使用共享密钥时,创建签名和验证签名的系统使用同一个密钥,这样授权服务器和资源服务器都能生产令牌。使用公钥加密,授权服务器拥有公钥和私钥,可用于生成令牌,而受保护资源则只能访问授权服务器的公钥,用于验证令牌,但无法自己生成有效的令牌,我们使用JOSE库中的RS256签名方法,它的地层使用RSA算法

    首先需要在授权服务器上添加一对公钥和私钥,我们的密码对是2048位的RSA密钥,这是推荐的最小长度,本练习使用基于JSON的JWK来存储密钥,可以通过JOSE库直接读取

        RsaJsonWebKey jwk = RsaJwkGenerator.generateJwk(2048);
        jwk.setKeyId("authserver");
        final String publicKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
        final String privateKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);
    

    使用私钥和RS256非对称签名方法,对内容进行签名::

        JwtClaims jwtClaims = new JwtClaims();
        jwtClaims.setIssuer("authserver");  //设置颁发者
        jwtClaims.setAudience("Audience");  //设置受众
        jwtClaims.setExpirationTimeMinutesInTheFuture(10); //过期时间
        jwtClaims.setGeneratedJwtId();  //令牌唯一标识,通常是一个密码学随机数
        jwtClaims.setIssuedAtToNow();   //令牌颁发时的时间
        jwtClaims.setNotBeforeMinutesInThePast(2); //代码生效时的时间
        jwtClaims.setSubject("aim");     //资源拥有者的唯一表标识
        jwtClaims.setStringClaim("payload", payload);
        jwtClaims.setStringClaim("header", header);
    
        JsonWebSignature jws = new JsonWebSignature();
        jws.setPayload(jwtClaims.toJson());
        jws.setKey(jwk.getRsaPrivateKey());   //私钥
        jws.setKeyIdHeaderValue(jwk.getKeyId());
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); //指定签名算法
    
        String jwt = jws.getCompactSerialization();
    

    使用公钥和RS256非对称签名方法,对签名进行验签

        JwtConsumer jwtConsumer = new JwtConsumerBuilder().setRequireExpirationTime()
                    .setAllowedClockSkewInSeconds(30)
                    .setRequireSubject()
                    .setExpectedIssuer("authserver")    //期望的颁发者
                    .setExpectedAudience("Audience")    //期望的令牌接收者
                    .setVerificationKey(jwk.getRsaPublicKey())  //验签公钥
                    .setJweAlgorithmConstraints(new AlgorithmConstraints    (AlgorithmConstraints.ConstraintType.WHITELIST,
                            AlgorithmIdentifiers.RSA_USING_SHA256)) //指定验签算法
                    .build();
    
        JwtClaims jwtClaims2 = jwtConsumer.processToClaims(jwt);
    

    其他令牌保护方法

    基于JOSE的保护令牌方法提供了多种。然而仅签名是不够的,对于仅被签名的令牌,客户端还是可以偷窥令牌本身,从中获取它本无权知道的信息,除了签名之外,JOSE还提供了一个叫JWE的加密机制,包含几种不同的选项和算法,经过JWE加密的JWT不再只有3部分组成,而是由5部分组成。各个部分仍然使用Base64URL编码,只是载荷现在变成了一个经过加密的对象,没有正确的密钥无法读取其内容

    首先私钥签名

        //生成签名密钥对
        RsaJsonWebKey jwk = RsaJwkGenerator.generateJwk(2048);
        jwk.setKeyId("authserver");
    
        //私钥签名
        JwtClaims jwtClaims = new JwtClaims();
        jwtClaims.setIssuer("authserver");
        jwtClaims.setAudience("Audience");
        jwtClaims.setExpirationTimeMinutesInTheFuture(10);
        jwtClaims.setGeneratedJwtId();
        jwtClaims.setIssuedAtToNow();
        jwtClaims.setNotBeforeMinutesInThePast(2);
        jwtClaims.setSubject("token");
        jwtClaims.setStringClaim("payload", payload);
        jwtClaims.setStringClaim("header", header);
    
        JsonWebSignature jws = new JsonWebSignature();
        jws.setPayload(jwtClaims.toJson());
        jws.setKey(jwk.getRsaPrivateKey());
        jws.setKeyIdHeaderValue(jwk.getKeyId());
        jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
    
        String jwt = jws.getCompactSerialization();
    
    然后公钥对签名内容加密::
    
        //生成密钥对
        RsaJsonWebKey jwk2 = RsaJwkGenerator.generateJwk(2048);
        jwk2.setKeyId("encryption");
        //对签名内容加密
        JsonWebEncryption jwe3 = new JsonWebEncryption();
        jwe3.setAlgorithmHeaderValue(KeyManagementAlgorithmIdentifiers.RSA_OAEP_256);
        jwe3.setEncryptionMethodHeaderParameter(ContentEncryptionAlgorithmIdentifiers.AES_256_CBC_HMAC_SHA_512);
        jwe3.setKey(jwk2.getRsaPublicKey());
        jwe3.setPayload(jwt);
        String token1 = jwe3.getCompactSerialization();
    

    私钥对加密内容解密::

        //对签名内容解密
        JsonWebEncryption jwe4 = new JsonWebEncryption();
        jwe4.setKey(jwk2.getPrivateKey());
        jwe4.setCompactSerialization(token1);
        String jwt2 = jwe4.getPayload();
    

    公钥对签名内容验签::

        //公钥验签
        JwtConsumer jwtConsumer = new JwtConsumerBuilder().setRequireExpirationTime()
                .setAllowedClockSkewInSeconds(30)
                .setRequireSubject()
                .setExpectedIssuer("authserver")
                .setExpectedAudience("Audience")
                .setVerificationKey(jwk.getRsaPublicKey())
                .setJweAlgorithmConstraints(new AlgorithmConstraints(AlgorithmConstraints.ConstraintType.WHITELIST,
                        AlgorithmIdentifiers.RSA_USING_SHA256))
                .build();
    
        JwtClaims jwtClaims2 = jwtConsumer.processToClaims(jwt2);
    

    在线获取令牌信息:令牌内省

    将令牌信息打包放入令牌本身,将导致令牌尺寸变得非常大,如果受保护资源完全依赖令牌本身所包含的信息,则一旦将有效的令牌生成并发布,想要撤回会非常困难

    内省协议

    OAuth令牌内省协议定义了一种机制,让受保护资源能够主动向授权服务器查询令牌状态。该协议是对OAuth的一个简单增强。授权服务器向客户端颁发令牌,客户端向受保护资源出示令牌,受保护资源向授权服务器查询令牌状态

    内省请求是发送给授权服务器内省端点的表单形式的HTTP请求,受保护资源在请求过程中需要向授权服务器进行身份认证,内省协议并未规定如何认证,例如,受保护资源使用ID和密码通过HTTP Basic进行省份认证,这与OAuth客户端向令牌端点进行身份认证方式一样。也可以使用单独的访问令牌完成此过程,UMA协议就是这样做的。

    内省请求的响应是一个JSON对象,用于描述令牌信息,它的内容与JWT的载荷相使,任何有效的JWT声明都可以包含在响应中

        HTTP 200 ok
        Content-type: application/json
        {
            "active": true,
            "scope": "foo bar baz",
            "client_id": "oauth-client-1",
            "username": "alice",
            "iss": "http://localhsot:9001/",
            "sub": "alice",
            "aud": "http://localhsot:9002/",
            "iat": 1440538696,
            "exp": 1440538996,
        }
    

    内省协议规范还在JWT的基础上增加了几个声明定义,其中最重要的是active声明,此声明告诉受保护资源当前令牌在授权服务器上是否有效,且是唯一必须返回的声明。由于OAuth令牌有多种部署类型,对有效令牌的定义并没有标准。但一般情况下,它的含义为令牌是由该授权服务颁发,还没有过期,也没有撤回,而且允许当前受保护资源获取它的信息。使用令牌内省会导致OAuth系统内的网络流量增加,为解决这个问题,允许受保护资源缓存给定令牌的内省请求结果,建议设置短于令牌生命周期的缓存有效期,以降低令牌被撤回但缓存还有效的可能性。

    展开全文
  • JWT令牌

    2020-08-21 21:30:38
    文章目录JWT令牌JWT介绍在JWT之前JWT介绍JWT令牌的优点JWT令牌的缺点令牌结构HeaderPayloadSignatureJWT入门生成私钥和公钥1、生成密钥证书2、导出公钥3、生成jwt令牌4、验证jwt令牌 JWT令牌 JWT介绍 在JWT之前 在...
  • 智能合约 阿卜杜勒令牌 基于ERC-20令牌标准的以太坊令牌
  • 令牌
  • 令牌

    2019-12-18 22:56:14
    令牌桶算法 在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。所以限流措施是必不可少的,其中最常见的一种限流方式就是 "令牌桶算法". 令牌桶算法是网络流量整形和...
  • redis令牌桶AOP实现令牌桶介绍说明实现思路@RateLimiterAopRedisRateLimiterAspectRedisLimitUtils应用 令牌桶介绍 令牌桶百度百科 令牌桶算法的基本过程如下: 假如用户配置的平均发送速率为r,则每隔1/r秒一个...
  • 令牌桶资料

    2015-09-09 18:19:20
    令牌桶资料,交换机小学期实验所需的令牌桶资料
  • 认证令牌

    2020-08-30 12:36:26
    认证令牌是代替口令的好办法。认证令牌是个小设备,在每次使用时生成一个新的随机数。这个随机数是认证的基础。认证令牌通常具有如下特性:处理器;LCD,显示输出;电池;小键盘,用于输入信息(可选);实时时钟...
  • 会话令牌:安全,高效,简单的随机会话令牌生成
  • MiniMeToken合同是具有附加功能的标准ERC20令牌令牌很容易克隆! 任何人都可以使用此合约从任何令牌中创建一个新的克隆令牌,其初始分布与指定块上的原始令牌相同。 调用createCloneToken函数的地址将成为令牌...
  • windows令牌学习

    2021-03-19 19:13:31
    访问令牌 访问令牌(Access Tokens)是Windows操作系统安全性的一个概念。 当用户登陆时,系统创建一个访问令牌,里面包含登录进程返回的SID和由本地安全策略分配给用户和用户的安全组的特权列表。 系统使用令牌控制...
  • 令牌机制

    千次阅读 2018-09-10 17:12:56
    用户在访问页面时,框架服务器会给用户的请求中分配一个令牌(一组值),并且将此令牌拷贝一份放在Session中,在用户提交后,会将用户提交时所携带的令牌和session中的令牌进行比对,通过之后会将服务器中的令牌销毁...
  • 令牌桶算法

    2020-06-10 16:10:46
    一、什么是令牌桶算法 令牌桶算法是比较常见的限流算法之一,要点如下: 所有的请求在处理之前都需要拿到一个可用的令牌才会被处理 根据限流大小,设置按照一定的速率往桶里面添加令牌 桶设置最大的放置令牌限制...
  • WEB安全之token令牌保证接口幂等性

    万次阅读 2020-08-16 02:05:34
    WEB安全之token令牌保证接口幂等性问题  业务要求:页面的数据只能被点击提交一次  发生原因:由于重复点击或者网络重发,或者 nginx 重发等情况会导致数据被重复提交 解决办法:采用 token 加 redis(redis ...
  • 令牌放置

    2019-10-31 22:46:53
    令牌的值为 token[i],每个令牌最多只能使用一次,可能的两种使用方法如下: 如果你至少有 token[i] 点能量,可以将令牌置为正面朝上,失去 token[i] 点能量,并得到 1 分。 如果我们至少有 1 分,可以将令牌置为...
  • 当您使用JSON Web令牌 ( JWT )或需要对有效载荷信息进行签名或加密的任何其他令牌技术时,设置令牌的到期日期很重要,因此,如果令牌到期,则可以假定这可能被视为安全漏洞,您拒绝使用此令牌进行任何通信,或者...
  • 文章目录token分类普通令牌JWT令牌 token分类 SpringSecurityOauth2令牌 参考URL: https://www.yuque.com/gaoxi-dj1fr/fxgaxe/ivvpqc 1.普通令牌的作用:唯一标识存贮在数据库或内存中的用户信息,在认证时,Spring...
  • token令牌

    千次阅读 2018-07-15 10:49:38
    防止重复刷新提交:token令牌.创建一个单例模式,防止两人同时提交,使用synchronzied关键字使线程安全.使用通用识别码随机生成一个uuidpackage com.dt64.util;import java.util.UUID;public class Stoken { static ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,962
精华内容 55,584
关键字:

令牌