java后端返回html,java返回值
00-1010最近需要等前端进行调试测试。互联网都知道,到了调试和测试阶段,基础工作是一段时间,中间有很多空隙。所以,为了度过这些空档,写几篇博客,记录下来。
处理思路大概是登录用户存在与否:如果不存在,则调用注册插件,如果存在,则获取用户的基本信息和令牌。
我测试和琢磨了他的原理,大致是这样的:1。加密你的账号,密码,生成时间,你的字符串(盐值-密钥)和到期时间;2.像我们平时生成md5,我们取了一个算法,算法的密钥是你唯一的字符串;3.算法,通过字符串用生成时间加密账号和密码,生成一批字符串,这就是token。
当你要验证令牌时,他的原则大致如下:1。如果你传令牌,他通过你的密钥串解密,解密的东西是否符合他的规则【他会把解密的东西变成特定字段的json数据。如果没有,那么你就无法解密json,你会报错,也就是根据json字符串的特征通过规则来判断】。如果没有,那么直接报错,解析错误,然后获取时间。当然,他也可以获取账号和密码,然后获取当前时间,从你的存储时间中减去,看是否超过过期时间。如果有,会提示过期。
理论上,当我得到这个用户的令牌,我就可以用令牌访问这个用户的任何服务,所以令牌要设置过期时间。另外,即使令牌过期,无法登录,但令牌中的信息仍然可以获取。所以,在token中,不要学习文本中的测试用例,保留敏感信息(如密码等。)
这里我们使用jwt依赖来生成令牌。
用于生成令牌的dependencygroupid com . auth 0/groupid artifactidjava-JWT/ArtifactidVersion 3 . 8 . 2/version/dependency
包com。举例。ETF。故事。服务;导入com。验证0。jwt。jwt导入com。验证0。jwt。jwt验证器;导入com。验证0。jwt。算法。算法;导入com。验证0。jwt。接口。索赔;导入com。验证0。jwt。接口。解码djwt导入Java。util。日期;导入Java。util。hashmap导入Java。util。地图;/* * * * @ desc使用代币验证用户是否登录* @ author zm * */public class token utils {//设置过期时间私有静态最终长EXPIRE _ DATE=1000 * 60 * 5;//1分钟//令牌秘钥private static final String TOKEN _ SECRET= zcfasfhuauuhufguguwu 2020 bqwf ;公共静态字符串令牌(字符串用户名,字符串密码){字符串令牌= ;尝试{ //过期时间日期=新日期(系统。当前时间毫秒()过期日期);//秘钥及加密算法算法算法=算法hmac 256(TOKEN _ SECRET);//设置头部信息MapString,Object header=new HashMap();header.put(typ , JWT );header.put(alg , hs 256 );//携带用户名、密码信息,生成签名token=JWT.create().带表头(表头)。withClaim(用户名,用户名)。withClaim(密码,密码)。withExpiresAt(日期)。符号(算法);} catch(Exception e){ e . printstacktrace();返回null}返回令牌;}公共静态布尔验证(字符串令牌){/* * * * @ desc验证令牌,通过返回true * @params [token]需要校验的串**/试试算法算法=算法hmac 256(TOKEN _ SECRET);jwt验证器验证器=jwt。要求(算法)。build();解码的jwt jwt=验证器。验证(令牌);返回true} catch(异常e){ system。出去。println(校验失败);返回false } } public static void main(String[]args){ String username=张三;字符串密码= 123 ;字符串令牌=令牌(用户名,密码);系统。出去。println(token);布尔b=verify( eyjhbgcioijuzi 1 niis INR 5 CCI 6 ikpxvcj 9。eyjwyxnzd 29 yzci 6 ijeymisimv 4 CCI 6 mty NZ a5o de 4 mcwidxnlcm 5 hbwuiij 6 agfuz 3 nhb ij 9。w-igxjmnborchlzt _ ptpktavyhgrn 9 zwkvpjojlu 6 ks));声明用户名1=jwt。解码( eyjhbgcioijuzi 1 niis INR 5 CCI 6 ikpxvcj 9。CCI 6 mty nza 5o de 4 mcwidxnlcm 5 hbwuoij 6 agfuz 3 NH bij 9。w-igxjmnborchlzt _ ptpktavyhgrn 9 zwkvpjojlu 6k 1).getClaim(用户名);System.out.println(我是从代币中获取的信息用户名1。asstring());系统。出去。println(b);}}到此这篇关于爪哇后端登录实现返回代币的文章就介绍到这了,更多相关爪哇后端登录内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。