java登录模块_JAVAWEB应用模块(一)登录模块

importcom.smart.ssai.admin.domain.User;importcom.smart.ssai.admin.service.UserService;importcom.smart.ssai.VO.Response;importcom.smart.ssai.common.utils.ResultVOUtil;importcom.smart.ssai.common.utils.ToolUtils;importcom.smart.ssai.constant.TokenConstant;importio.jsonwebtoken.JwtBuilder;importio.jsonwebtoken.Jwts;importio.jsonwebtoken.SignatureAlgorithm;importorg.springframework.beans.BeanUtils;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.http.ResponseEntity;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;

@RestController

@RequestMapping("/api")public classLoginController {

@AutowiredprivateUserService userService;/*** 用户登录

*@paramusername 用户名

*@parampassword 密码

*@return

*/@PostMapping("/login")public ResponseEntity login(@RequestParam(value = "username") String username

, @RequestParam(value= "password") String password){

User user=userService.getUserByUsername(username);//判断用户是否存在

if(null ==user){return ResultVOUtil.show(0,"用户不存在,请重新输入",null);

}//判断密码是否正确

String password1 =ToolUtils.md5Hex(password,String.valueOf(user.getCode()));if(!user.getPassword().equals(password1)){return ResultVOUtil.show(0,"用户密码错误",null);

}//登录成功,生成token,并更新数据库token和过期时间

Date date = newDate();

Integer nowTime= (int)(date.getTime()/1000);//当前时间戳

String token = createToken(user,date);//token

User model = newUser();

BeanUtils.copyProperties(user,model);//model.setId(user.getId());

model.setTimeout(nowTime);

model.setToken(token);

userService.insert(model);//跳转到指定页面,这里不跳转,返回token信息给前端

Map map = new HashMap<>();

map.put("token",token);return ResultVOUtil.show(1,"登录成功",map);

}/*** 生成token,根据有效的用户信息

*@paramuser 用户实例

*@paramdate 当前日期

*@return

*/

privateString createToken(User user, Date date){

SignatureAlgorithm signatureAlgorithm=SignatureAlgorithm.HS256;

JwtBuilder builder= Jwts.builder().setHeaderParam("typ", "JWT")//设置header

.setHeaderParam("alg", "HS256").setIssuedAt(date)//设置签发时间

.setExpiration(new Date(date.getTime() + TokenConstant.EXPIRE))//设置过期时间,30天,超出int,要加L

.claim("userid",String.valueOf(user.getId()))//设置内容

.setIssuer(TokenConstant.ISSUER)//设置签发人

.signWith(signatureAlgorithm, TokenConstant.SECRETKEY);//签名,需要算法和key

String jwt =builder.compact();returnjwt;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值