java后台代碼(MD5加密+token驗證):
import com.smart.ssai.admin.domain.User; import com.smart.ssai.admin.service.UserService; import com.smart.ssai.VO.Response; import com.smart.ssai.common.utils.ResultVOUtil; import com.smart.ssai.common.utils.ToolUtils; import com.smart.ssai.constant.TokenConstant; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Date; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api") public class LoginController { @Autowired private UserService userService; /** * 用戶登錄 * @param username 用戶名 * @param password 密碼 * @return */ @PostMapping("/login") public ResponseEntity<Response> 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 = new Date(); Integer nowTime = (int)(date.getTime()/1000);//當前時間戳 String token = createToken(user,date);//token User model = new User(); BeanUtils.copyProperties(user,model); // model.setId(user.getId()); model.setTimeout(nowTime); model.setToken(token); userService.insert(model); //跳轉到指定頁面,這里不跳轉,返回token信息給前端 Map<String,Object> map = new HashMap<>(); map.put("token",token); return ResultVOUtil.show(1,"登錄成功",map); } /** * 生成token,根據有效的用戶信息 * @param user 用戶實例 * @param date 當前日期 * @return */ private String 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(); return jwt; } }