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

网站建设哪家g好上海广告公司排行榜

网站建设哪家g好,上海广告公司排行榜,标识标牌制作设计,制作网页软件app前言 单点登录#xff08;Single Sign-On#xff0c;简称SSO#xff09;是一种身份验证和访问控制机制#xff0c;允许用户使用一组凭证#xff08;如登录名和密码#xff09;登录到多个应用程序中#xff0c;而无需为每个应用程序单独进行身份验证。用户只需要登录一次…前言 单点登录Single Sign-On简称SSO是一种身份验证和访问控制机制允许用户使用一组凭证如登录名和密码登录到多个应用程序中而无需为每个应用程序单独进行身份验证。用户只需要登录一次就可以访问所有系统的应用和资源。相对于传统的每个系统都需要登录一次的方式单点登录可以提高用户体验降低用户的登录成本。在本文中我们将通过使用JWTJSON Web Token和Redis来实现SSO功能并提供详细的Java代码实例。 一、实现单点登录的步骤 设计登录系统 设计登录系统时需要考虑如何通过登录信息验证用户身份并生成令牌Token同时将Token保存在服务器端和客户端。 实现令牌传递和验证 在用户通过登录系统进行登录和身份验证后应用程序要将Token返回给客户端由客户端在访问其他应用时携带Token进行验证。 支持跨域访问 由于SSO需要支持不同的域名和端口之间的单点登录所以应用程序需要支持跨域访问。传统的方式是使用Cookies来处理SSO但如果采用Cookies会有跨站脚本攻击XSS和跨站请求伪造CSRF的安全问题。因此在现代Web应用程序中通常使用 JSON Web TokenJWT或OAuth 2.0来实现单点登录和授权。 二、Java实现单点登录的代码示例 下面我们给出一个基于Spring Boot和JWT和Redis的Java实现单点登录的样例代码。 1.添加依赖 在我们的Spring Boot项目中添加如下JWT和Redis的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion3.7.0/version /dependency dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.11.2/version /dependency2.配置Redis连接 在application.properties文件中添加以下Redis连接信息 spring:redis:host: localhostport: 6379password: your_pwdjedis:pool:max-active: 1024max-wait: 10000max-idle: 200min-idle: 10timeout: 10000 jwt:secret: your_secret_keytoken:expireTime: 36003.实现JWT Token工具类 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit;Component public class JwtTokenUtil {Value(${jwt.secret})private String secret;Value(${jwt.token.expireTime})private Long expireTime;private final String TOKEN_CACHE_PREFIX token:;Autowiredprivate RedisTokenUtils redisTokenUtils;public String generateToken(String username) {MapString, Object claims new HashMap();claims.put(sub, username);claims.put(created, new Date());String token Jwts.builder().setClaims(claims).setExpiration(generateExpirationDate()).signWith(SignatureAlgorithm.HS512, secret).compact();redisTokenUtils.setToken(TOKEN_CACHE_PREFIX username, token);return token;}// 其他方法...// 注意事项// - 加密密钥secret需要保密且足够复杂。// - JWT Token的有效期应根据实际需求进行设置。 }4.实现Redis Token存储工具类 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component;import java.util.Date; import java.util.concurrent.TimeUnit;Component public class RedisTokenUtils {Value(${jwt.token.expireTime})private Long expireTime;Autowiredprivate RedisTemplateString, Object redisTemplate;public void setToken(String key, Object value) {redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.MINUTES);}public void deleteToken(String key) {redisTemplate.delete(key);}// 其他方法...// 注意事项// - Redis的连接配置需要正确设置。// - Token的存储和删除应在合适的时机进行。 }5. 实现登录逻辑 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class AuthService {Autowiredprivate JwtTokenUtil jwtTokenUtil;public String login(String username, String password) {// 验证用户名和密码的逻辑// ...String token jwtTokenUtil.generateToken(username);return token;} }6. 实现登出逻辑 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class AuthService {Autowiredprivate JwtTokenUtil jwtTokenUtil;public void logout(String username) {jwtTokenUtil.deleteToken(username);} }三、注意事项 在使用JWT和Redis实现SSO时需要注意以下事项 密钥secret的安全性很重要并应保密且足够复杂。比如在生成Token时使用合适的算法进行签名以确保Token的安全性。验证Token时需要使用相同的算法和密钥进行解密和验证。同时还需要对Token的合法性进行校验比如检查Token是否过期、是否被篡改等。令牌的有效期应根据实际需求进行设置过长的有效期可能会增加安全风险而过短的有效期可能会导致频繁的重新登录。在用户登出或注销操作时应及时删除对应的令牌以避免令牌被滥用。 总结 通过结合JWT和Redis我们可以轻松实现单点登录SSO的功能。JWT用于生成和验证令牌而Redis用于存储和管理令牌。JWT提供了一种轻量级的、无状态的身份验证机制而Redis则提供了持久化存储和高性能的缓存功能。通过这样的组合我们可以实现身份认证的高效和可靠同时提供了可配置的令牌有效期功能保证了系统的安全性。
http://www.hkea.cn/news/14585688/

相关文章:

  • 地方性门户网站有哪些西安西郊网站建设
  • 快速整站排名seo教程营销软件开发
  • 电影网站织梦模版广州单管核酸采样点
  • 网站新手引导怎么做仙桃住房和城乡建设部网站
  • 龙华网站建设多少钱门户网站建设方案中信息公开
  • 网页制作与网站建设 论文seo快速排名易下拉霸屏
  • 四川住房和城乡建设厅网站不能打开取名字网站如何做
  • 建新网站开发流程图便利的邯郸网站建设
  • 河南濮阳网站建设建筑设计公司名称
  • 信誉好的集团网站建设网页设计师培训哪个好
  • 深圳网站建设找哪188自助建站系统
  • 开题报告网站开发方法国内wordpress大牛
  • 广州网站建设公司排名电商平台开发需要多少钱
  • 哪个网站做高中的题好服务好的网站制作
  • lol解说网站源码古交市网站建设公司
  • 找人做网站要注意什么口碑好的邯郸网站建设
  • 网站开发的课程大悟建设局网站
  • 外贸网站推广建设海南企业年报网上申报入口
  • 短连接转换网站开发中国能源建设集团有限公司招聘网
  • 不在百度做推广他会把你的网站排名弄掉沈阳建设工程信息网 费用中项网
  • app模板网站模板一加官方网站进入
  • 有域名有空间如何做网站网站建设分为那几个模块
  • 广告公司网站设计方案台州seo优化
  • 上海装修公司口碑最好的是哪家网站优化平台有哪些
  • 垂直网站需要多少钱用网站做赌彩广告
  • 只有网站才需要域名吗彩票类网站是如何做代理的
  • 如何做网站清风制作网站底部设计代码
  • 综合性门户网站是什么意思良精企业网站管理系统源码 后台不能编辑产品
  • 做网站开发的公司销售个人网站允许做内部论坛吗
  • 韩国建筑网站南宁市网络公司地址