jwt完成管理员登录流程

1, 在common中导入jwt的包
<dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.6.0</version>
        </dependency>
2,写wjtutil工具类
public class JwtUtil {

    private String key ;

    private long ttl ;//一个小时

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public long getTtl() {
        return ttl;
    }

    public void setTtl(long ttl) {
        this.ttl = ttl;
    }

    /**
     * 生成JWT
     *
     * @param id
     * @param subject 用户名
     * @return
     */
    public String createJWT(String id, String subject, String roles) {
        long nowMillis = System.currentTimeMillis();
        Date now = new Date(nowMillis);
        JwtBuilder builder = Jwts.builder().setId(id)
                .setSubject(subject)
                .setIssuedAt(now)
                .signWith(SignatureAlgorithm.HS256, key).claim("roles", roles);
        if (ttl > 0) {
            builder.setExpiration( new Date( nowMillis + ttl));
        }
        return builder.compact();
    }

    /**
     * 解析JWT
     * @param jwtStr
     * @return
     */
    public Claims parseJWT(String jwtStr){
        return  Jwts.parser()
                .setSigningKey(key)
                .parseClaimsJws(jwtStr)
                .getBody();
    }
}

3,填写配置文件(application.yml中)
#设置令牌的盐和过期时间为一个小时
jwt:
  config:
    key: wangyu
    ttl: 3600000
4,把Jwtutil注入
    @Bean
    public JwtUtil jwtUtil(){
        return new JwtUtil();
    }
4,在管理员登录界面写如下代码(controller)
 @RequestMapping(method = RequestMethod.POST, value = "/login")
    public Result checkLogin(@RequestBody Admin admin1) {

        Admin admin = adminService.findByLoginNameAndPassword(admin1.getLoginname(), admin1.getPassword());

        if (admin != null) {

            //生成令牌
            String token = jwtUtil.createJWT(admin.getId(), admin.getLoginname(), "admin");
            Map<String, Object> map = new HashMap<>();
            map.put("token", token);
            map.put("role", "admin");
            return new Result(true, StatusCode.OK, "校验成功", map);
        } else
            return new Result(true, StatusCode.OK, "校验失败");
    }

注意:本次生成令牌是在controller中生成的
重点:
1,json可以把map转化为json格式
2,返回给前台的是token和角色

—人心不足蛇吞象,劝君珍惜眼前人

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸羽菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值