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

江西工程建设信息网站免费的建网站软件

江西工程建设信息网站,免费的建网站软件,做网站需要注册什么类型的公司,重庆建站网站流程及费用PS:作者是小白能接触到的就只会这样写。勿喷。 前提 思路: 结合io流将登录token存储到配置文件中,不将token存储到浏览器端,从而避免盗取。 下面jwt的学习可以参考下这个: JWT --- 入门学习_本郡主是喵的博客-CSDN博客 JWT工具类 Component public class JWTtU…

PS:作者是小白能接触到的就只会这样写。勿喷。

前提

思路: 结合io流将登录token存储到配置文件中,不将token存储到浏览器端,从而避免盗取。

下面jwt的学习可以参考下这个:

JWT --- 入门学习_本郡主是喵的博客-CSDN博客

JWT工具类

@Component
public class JWTtUtils {public static final String USER_NAME = "username";public static final String PASS_WORD = "password";public static final String CREATE_TIME = "createTime";public static final String SIGN_KEY = "QHX2004"; // 解析key/*** 用用户名和密码生成JWT** @param username* @param password* @return*/public String generatorJWTFromUserNameAndPassword(String username,String password){HashMap<String, Object> hashMap = new HashMap<>(); // 生成maphashMap.put(USER_NAME,username);hashMap.put(PASS_WORD,password);hashMap.put(CREATE_TIME,new Date());return  generatorJWTFromUserNameAndPassword(hashMap);}/*** 生成jwt过期时间,1个月** @param* @return*/private Date generatorExpirationDate() {return new Date(System.currentTimeMillis() + (1000L * 60 * 60 *24 *30));}/*** 用用户名和密码生成jwt** @param paramMap* @return*/private String generatorJWTFromUserNameAndPassword(HashMap<String, Object> paramMap) {JwtBuilder jwtBuilder = Jwts.builder().setClaims(paramMap).setExpiration(generatorExpirationDate()) // 设置过期时间.signWith(SignatureAlgorithm.HS512,SIGN_KEY);return jwtBuilder.compact(); // 拿到token}/*** 解析token拿到Claims*** @param token* @return*/private Claims getClaimsFromToken(String token){Claims claims = Jwts.parser().setSigningKey(SIGN_KEY).parseClaimsJws(token).getBody();return claims;}/*** 校验token是否过期** @param token* @return*/// 过期返回truepublic boolean checkTokenIsOverdue(String token){Claims claims = getClaimsFromToken(token);Date date =  claims.getExpiration();return date.getTime() < new Date().getTime();}/*** 刷新token:重新生成一个token** @param* @return*/public String flushToken(String token){Claims claims = getClaimsFromToken(token);String username = (String) claims.get(USER_NAME);String password = (String)claims.get(PASS_WORD);return generatorJWTFromUserNameAndPassword(username,password);}}

IO工具类

public class IOUtils {public static final String FILE_NAME = "conf.properties";/***   配置文件读取* @param key* @return  value*/public static String getPropertiesKey(String key)  {return  getKey(key);}/*** 配置文件读取** @param  key* @return*/private static String getKey(String key) {Properties properties = new Properties();File file = new File(FILE_NAME);FileInputStream inputStream = null;try {inputStream = new FileInputStream(file);properties.load(inputStream); // 其实已经将配置文件拿到手了} catch (IOException e) {e.printStackTrace();}finally {if(inputStream != null){  // 还是这样关比较好,万一报错就tm关不了try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}return  properties.getProperty(key);}/*** 配置文件设置** @param key* @param value* @return*/public static boolean setPropertiesKey(String key,String value) {// 判断key是否有重复String key1 = getKey(key);if(key1 == null){return setKey(key,value); // 把核心业务逻辑抽出来}return false;}/***  配置文件设置** @param key* @param value* @return boolean*/private static boolean setKey(String key, String value) {Properties properties = new Properties();File file = new File(FILE_NAME); // 其实有其他配置可以同意下yaml文件里面配置,然后这里面读取,好统一调配。FileWriter fileWriter = null;try {fileWriter = new FileWriter(file,true);properties.setProperty(key, value); // 存进map里面properties.store(fileWriter,""); // 将map对应的键值对写进输出流。} catch (IOException e) {// 卧槽我加入设置key,value失败,肯定调到这个逻辑return false;} finally {if (fileWriter != null) {  // 还是这样关比较好,万一报错就tm关不了try {fileWriter.flush();fileWriter.close();} catch (IOException e) {e.printStackTrace();}}}return true;}}

测试文件

@SpringBootTest
class IoDemoApplicationTests {@Testvoid contextLoads() {// 用户第一登录 ----,我们这里浏览器端不存token,只存用户名,更安全。String username = "qhx2005";String password = "123456";// 生成jwtJWTtUtils jwTtUtils = new JWTtUtils();String token = jwTtUtils.generatorJWTFromUserNameAndPassword(username, password);// 将jwt存进配置文件boolean success = IOUtils.setPropertiesKey(username, token);System.out.println("存进配置文件成功状态:"+success);assert success;// 用户登录后访问其他页面。检验token过期,拿出配置文件是否存在----// 获取tokenString token1 = IOUtils.getPropertiesKey(username);System.out.println(token1);// 检验token是否过期boolean overdue = jwTtUtils.checkTokenIsOverdue(token);// 本来这里如果token过期,我们响应一个状态码,让前端axios过滤器捕获到,删除本地username,重定向到登录页。System.out.println("已经过期:"+overdue);}}

http://www.15wanjia.com/news/182932.html

相关文章:

  • 商业十大网站省建设厅网站二建考试
  • 国美电器如何进行网站的建设与维护wordpress建站需要写代码吗
  • 苏州网站建设网站wordpress性能检测
  • 作品网站wordpress文章总是被修改
  • 下载58同城网招聘找工作seo分析与优化实训心得
  • 做网站选择哪家运营商外贸平台有哪些是免费的直接可以发布售卖产品的
  • 平坝网站建设天津工商网上办事大厅
  • 宁波外贸网站推广个人网站后台管理
  • 互联网网站建设新闻中建国际建设有限公司官网
  • 鹤壁市住房和城乡建设局网站免费网站开发软件有哪些
  • 模板网站也可以做优化黄圃网站建设
  • 企业网站需求文档南宁 建网站
  • 网站建设关键词优化价格推介做界面的网站
  • 万网做网站怎么样阳江彭志雄
  • 二维码制作网站有哪些网站建设请示怎么写
  • 搭建网站大概多少钱广州网站推广奋
  • 渭南市住建设局网站vps 建网站
  • 余杭区高端网站建设南昌百度推广优化排名
  • 企业网站建设解决方案包装设计模板
  • 任丘建设网站制作品牌营销推广代运营
  • 网站备案幕布照片ac域名网站
  • 四川城乡住房建设部网站做网站 业务流程图
  • 网站建设公司专业网站开发制作郑州小企业网站建设
  • 淘宝网站开发网站的登录注册页面怎么做的
  • 做网站刷赞qq怎么赚钱成都设计公司税率
  • 网站最合适的字体大小如何把刚做的网站被百度抓取到
  • 合肥网站制作推广清远专业网站建设服务
  • 宁波seo公司网站推广开发是什么意思
  • 免费凡科建站官网提供网站建设方案服务
  • 百度模板网站模板建设项目水资源论证网站