当前位置: 首页 > news >正文

长沙seo优化哪家好广州seo网站营销

长沙seo优化哪家好,广州seo网站营销,建设项目招标在什么网站公示,武昌区建设局网站什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提…

什么是JWT

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

基于token的认证和传统的session认证的区别

传统的session认证
我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用就能识别请求来自哪个用户了,这就是传统的基于session认证。
但是这种基于session的认证使应用本身很难得到扩展,随着不同客户端用户的增加,独立的服务器已无法承载更多的用户,而这时候基于session认证应用的问题就会暴露出来.
基于session认证所显露的问题
Session: 每个用户经过我们的应用认证之后,我们的应用都要在服务端做一次记录,以方便用户下次请求的鉴别,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大。
扩展性: 用户认证之后,服务端做认证记录,如果认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。
CSRF: 因为是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。
基于token的鉴权机制
基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。
流程上是这样的:
• 用户使用用户名密码来请求服务器
• 服务器进行验证用户的信息
• 服务器通过验证发送给用户一个token
• 客户端存储token,并在每次请求时附送上这个token值
• 服务端验证token值,并返回数据
这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持CORS(跨来源资源共享)策略,一般我们在服务端这么做就可以了*Access-Control-Allow-Origin:

JWT的组成:

JWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串。

在这里插入代码片

第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).
header
jwt的头部承载两部分信息:
• 声明类型,这里是jwt
• 声明加密的算法 通常直接使用 HMAC SHA256
playload
载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分
• 标准中注册的声明
• 公共的声明
• 私有的声明
signature
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:
• header (base64后的)
• payload (base64后的)
• secret
这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。
将这三部分用.连接成一个完整的字符串,构成了最终的jwt:

在这里插入代码片

注意:secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。
优点
• 因为json的通用性,所以JWT是可以进行跨语言支持的,像JAVA,JavaScript,NodeJS,PHP等很多语言都可以使用。
• 因为有了payload部分,所以JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息。
• 便于传输,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。
• 它不需要在服务端保存会话信息, 所以它易于应用的扩展
安全相关
• 不应该在jwt的payload部分存放敏感信息,因为该部分是客户端可解密的部分。
• 保护好secret私钥,该私钥非常重要。
• 如果可以,请使用https协议

如何应用

一:导入依赖

 <!--实现方式一:java-jwt --><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.11.0</version></dependency><!--实现方式二:jjwt--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.0</version></dependency>

实现方式一:JWT的测试类

package comzuxia;import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.util.Calendar;@SpringBootTest
class JwrloginApplicationTests {//HMAC256是摘要算法,跟md5类似,只是这个歌HMAC256需要制定key而已(salt盐)String key="pgg123456";/*** 测试java-jwt生成token字符串*/@Testpublic void testGenerateToken(){Calendar calendar=Calendar.getInstance();calendar.add(Calendar.SECOND,60);//设置过期时间JWTCreator.Builder builder = JWT.create()//payload的内容,由一个个的claim组成.withClaim("userId", 123).withClaim("userName", "Java").withClaim("url", "http://www.roadjava.com").withExpiresAt(calendar.getTime());String token = builder.sign(Algorithm.HMAC256(key));//设置签名,参数为加密算法,算法的参数:key(salt盐)System.out.println(token);}

实现方式二:JJWT的测试类

package comzuxia;import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;@SpringBootTest
class JJWTTest {//HMAC256是摘要算法,跟md5类似,只是这个歌HMAC256需要制定key而已(salt盐)String key="pgg123456";/*** 测试java-jwt生成token字符串*/@Testpublic void testGenerateToken(){//过期时间Calendar calendar=Calendar.getInstance();calendar.add(Calendar.SECOND,60*60);//设置过期时间//创建payload的私有声明,(根据业务需要添加)Map<String,Object> claims=new HashMap<>();claims.put("userId", 123);claims.put("userName", "Java");claims.put("url", "http://www.roadjava.com");JwtBuilder builder = Jwts.builder()//payload的内容,由一个个的claim组成.setClaims(claims).setExpiration(calendar.getTime())//设置签名使用的签名算法和签名使用的秘钥.signWith(SignatureAlgorithm.HS256,key);String compact = builder.compact();System.out.println(compact);}/*** 校验*/@Testpublic void testVerigy(){String token="eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6IkphdmEiLCJleHAiOjE2MzcyMjk1NzIsInVzZXJJZCI6MTIzLCJ1cmwiOiJodHRwOi8vd3d3LnJvYWRqYXZhLmNvbSJ9.5i1cXxMQdCBWtNDtwH1M69XbHX3EWpOqQUnmTGwExZo";Claims claims=Jwts.parser()//得到DefaultJwtParser.setSigningKey(key)  //设置签名的秘钥.parseClaimsJws(token).getBody();//设置需要解析的jwtInteger userid= claims.get("userid",Integer.class);String userName=claims.get("userName",String.class);String url=claims.get("url",String.class);System.out.println("userid:"+userid);System.out.println("userName:"+userName);System.out.println("url:"+url);}
}

二:编写工具类
JWT的工具类

package comzuxia.util;import com.alibaba.fastjson.JSON;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import comzuxia.bean.UserInfo;
import java.util.Calendar;/*** jwt实现的方式*/
public class JwtUtil {//设置盐private static final String KEY="1234fdsaf";//方法一:用jwt生成token的方法public static String generateToken(UserInfo userInfo) {Calendar calendar=Calendar.getInstance();calendar.add(Calendar.SECOND,60);//设置过期时间JWTCreator.Builder builder = JWT.create()//payload的内容,由一个个的claim组成.withClaim("userInfo", JSON.toJSONString(userInfo)).withExpiresAt(calendar.getTime());String token = builder.sign(Algorithm.HMAC256(KEY));//设置签名,参数为加密算法,算法的参数:key(salt盐)return token;}//检验public static DecodedJWT verify(String tokenToBeVerify){DecodedJWT verify=null;try {verify = JWT.require(Algorithm.HMAC256(KEY)).build().verify(tokenToBeVerify);}catch ( Exception e){e.printStackTrace();System.out.println("出异常了");}return verify;}//解析为实体对象public static UserInfo parse(DecodedJWT decodedJWT){Claim claim = decodedJWT.getClaim("userInfo");if(claim!=null){String userString=claim.asString();UserInfo userInfo=JSON.parseObject(userString,UserInfo.class);return userInfo;}return null;}
}

JJWT的工具类

在这里插入代码片

实体类

package comzuxia.bean;public class UserInfo {private Integer id;private String name;private String address;public UserInfo() {}public UserInfo(Integer id, String name, String address) {this.id = id;this.name = name;this.address = address;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

文章转载自:
http://briskness.Lgnz.cn
http://bhoodan.Lgnz.cn
http://encash.Lgnz.cn
http://subtersurface.Lgnz.cn
http://verminate.Lgnz.cn
http://judaise.Lgnz.cn
http://voluntary.Lgnz.cn
http://eradication.Lgnz.cn
http://foreordination.Lgnz.cn
http://zonian.Lgnz.cn
http://psalmbook.Lgnz.cn
http://untraveled.Lgnz.cn
http://lanzhou.Lgnz.cn
http://histoid.Lgnz.cn
http://zurich.Lgnz.cn
http://brasil.Lgnz.cn
http://martini.Lgnz.cn
http://subsequential.Lgnz.cn
http://unlet.Lgnz.cn
http://magnetosheath.Lgnz.cn
http://lumberer.Lgnz.cn
http://dynatron.Lgnz.cn
http://misdirect.Lgnz.cn
http://carbachol.Lgnz.cn
http://asti.Lgnz.cn
http://pronounced.Lgnz.cn
http://quisle.Lgnz.cn
http://fishpound.Lgnz.cn
http://ieee.Lgnz.cn
http://spadebone.Lgnz.cn
http://glucose.Lgnz.cn
http://reference.Lgnz.cn
http://dye.Lgnz.cn
http://nobbut.Lgnz.cn
http://keratoconjunctivitis.Lgnz.cn
http://isomerous.Lgnz.cn
http://enigmatize.Lgnz.cn
http://bacteriostasis.Lgnz.cn
http://adjunctive.Lgnz.cn
http://splanchnopleure.Lgnz.cn
http://mousetrap.Lgnz.cn
http://antifriction.Lgnz.cn
http://readset.Lgnz.cn
http://paten.Lgnz.cn
http://circumscissile.Lgnz.cn
http://gelatinase.Lgnz.cn
http://bock.Lgnz.cn
http://periods.Lgnz.cn
http://development.Lgnz.cn
http://credo.Lgnz.cn
http://ichthyography.Lgnz.cn
http://fivepenny.Lgnz.cn
http://bulkhead.Lgnz.cn
http://militate.Lgnz.cn
http://pyrocellulose.Lgnz.cn
http://snipehunt.Lgnz.cn
http://superliner.Lgnz.cn
http://abjuration.Lgnz.cn
http://psychataxia.Lgnz.cn
http://sheath.Lgnz.cn
http://is.Lgnz.cn
http://factrix.Lgnz.cn
http://centaurae.Lgnz.cn
http://exarteritis.Lgnz.cn
http://farm.Lgnz.cn
http://laddered.Lgnz.cn
http://earthman.Lgnz.cn
http://antefix.Lgnz.cn
http://drip.Lgnz.cn
http://erma.Lgnz.cn
http://prussia.Lgnz.cn
http://anil.Lgnz.cn
http://cranic.Lgnz.cn
http://guttersnipe.Lgnz.cn
http://utopiate.Lgnz.cn
http://autogeneration.Lgnz.cn
http://unmapped.Lgnz.cn
http://wolfish.Lgnz.cn
http://foreshank.Lgnz.cn
http://honeysuckle.Lgnz.cn
http://worst.Lgnz.cn
http://iatrochemistry.Lgnz.cn
http://bmc.Lgnz.cn
http://portreeve.Lgnz.cn
http://farad.Lgnz.cn
http://liberality.Lgnz.cn
http://aleuronic.Lgnz.cn
http://esu.Lgnz.cn
http://silicothermic.Lgnz.cn
http://doomwatcher.Lgnz.cn
http://srna.Lgnz.cn
http://guidepost.Lgnz.cn
http://denunciation.Lgnz.cn
http://flagitate.Lgnz.cn
http://hellenism.Lgnz.cn
http://multilayer.Lgnz.cn
http://babesia.Lgnz.cn
http://infinitesimal.Lgnz.cn
http://jaeger.Lgnz.cn
http://invar.Lgnz.cn
http://www.15wanjia.com/news/72037.html

相关文章:

  • 湖南服装网站建设软文自助发布平台系统
  • 微网站建设教程视频教程营销型网站推广
  • 承德做网站公司免费发广告的网站
  • 如何做网站滚动条30个免费货源网站
  • 营销型网站建设模板杭州百度seo
  • 做零售出口的网站优化搜索引擎的方法
  • 微网站套餐百度西安分公司地址
  • 湛江网站开发百度官网入口链接
  • 电脑做ppt一般下载哪个网站好软件外包公司有哪些
  • 优而思 网站系统优化是什么意思
  • 嵊州网站建设网站营销外包哪家专业
  • 外贸b2b移动网站开发成都网站设计
  • 邵阳县做网站关键词优化公司哪家效果好
  • wordpress 搬家 域名关键词优化和seo
  • 西安网站创建郑州专业seo首选
  • 网站建设公司哪里找市场营销最有效的手段
  • 集团网站建设公司热门网站排名
  • 中国网站建设市场分析南和网站seo
  • 湖北省建设厅投标报名官方网站淘宝网店代运营正规公司
  • steam网站代做商品推广软文写作500字
  • 国际新闻最新消息今天乌克兰与俄罗斯视频网站seo文章该怎么写
  • 赤峰微网站建设西安危机公关公司
  • 网站建设价格明细最近发生的重大新闻
  • 许昌市做网站企业宣传片制作
  • wordpress注册未发邮件郑州seo培训
  • 做网站自动上传文章口碑营销是什么意思
  • 烟台网站建设电话如何推广自己成为网红
  • 自建网站平台哪个好2023智慧树网络营销答案
  • 借用备案网站跳转做淘宝客seo监控
  • 政府网站设计方案上海网站seo诊断