springboot实现Web系统License授权认证
package com.saite.energy.ids.controller;
import com.saite.energy.ids.enums.IdsHttpStatusEnum;
import com.saite.energy.ids.enums.ResponseResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
@RestController
@RequestMapping("/mac")
public class MacAddressController {
@PostMapping("/getMacAddress")
public ResponseResult<String> getMacAddress(String ip) throws SocketException {
InetAddress inetAddress = null;
for (Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); networkInterfaces.hasMoreElements(); ) {
NetworkInterface ni = (NetworkInterface) networkInterfaces.nextElement();
for (Enumeration addresses = ni.getInetAddresses(); addresses.hasMoreElements(); ) {
InetAddress address = (InetAddress) addresses.nextElement();
if (!address.isLoopbackAddress()
&& !address.isLinkLocalAddress() && !address.isMulticastAddress() && ip.equals(address.getHostAddress())) {
inetAddress = address;
}
}
}
if (inetAddress != null){
try {
byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
if (i != 0) {
stringBuilder.append("-");
}
String temp = Integer.toHexString(mac[i] & 0xff);
if (temp.length() == 1) {
stringBuilder.append("0").append(temp);
} else {
stringBuilder.append(temp);
}
}
return ResponseResult.ok().data(stringBuilder.toString().toUpperCase());
} catch (SocketException e) {
e.printStackTrace();
}
return null;
}else {
return ResponseResult.error(IdsHttpStatusEnum.LICENSE_IP_ERROR);
}
}
}
package com.saite.energy.ids.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
@Getter
public enum IdsHttpStatusEnum {
OK(20000, "成功"),
NO_USER_ID_ERROR(11100, "无用户ID"), NO_ROLE_ID_ERROR(11101, "缺少角色ID"), ENTERPRISE_DEPT_DELETE(11102,"企业删除失败,请先删除该企业下的所有部门和电站"),
AUTH_TOO_HIGH(11103,"该角色含有过高权限"),ROLE_DETAIL_FAUL(11104,"该角色详情不可查看"),
ROLE_TOO_HIGH(11105,"该用户含有过高角色"),USER_DETAIL_FAUL(11106,"该用户详情不可查看"),
NO_DEPT(11107,"部门不能为空"),LOGIN_NAME_NULL(11108,"用户名不能为空"),LOGIN_NAME_EXIST(11109,"用户名已存在"),
SMS_SEND_TOO_OFTEN(11110,"短信发送太频繁"), VER_CODE_ERROR(11111, "验证码错误"),
EMAIL_SEND_TO_OFTEN(11112, "邮件发送太频繁"), REGISTER_TYPE_ERROR(11113, "注册类型错误"), FORGET_TYPE_ERROR(11114, "找回密码类型错误"),
USER_UNREGISTER(11115, "账号未注册"),ROLE_CAN_NOT_UPDATE(11116,"该角色为内置角色,不可修改"),REGISTER_ROLE_ERROR(11117, "注册角色有误"),
INSTALLER_OR_AGENT_ENTERPRISE_NOT_NULL(11118,"安装商或代理商所属企业不能为空"),USER_USERNAME_ERROR(11119,"用户姓名不能为空"),
USER_GENDER_ERROR(11120,"用户性别有误"),USER_ORIGINAL_PASSWORD_ERROR(11121,"旧密码有误"),USER_NEW_PASSWORD_ERROR(11122,"新密码有误"),
LICENSE_FILETYPE_NOTMATCH(11123,"license文件类型不匹配"),LICENSE_IMPORT_FAIL(11124,"license导入失败"),LICENSE_IP_ERROR(11125,"license导入失败,没有对应ip"),
;
private int code;
private String msg;
IdsHttpStatusEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
public static IdsHttpStatusEnum getByCode(int code) {
Optional<IdsHttpStatusEnum> first = Arrays.stream(IdsHttpStatusEnum.values()).filter(item -> item.code == code).findFirst();
if(first.isPresent()) {
return first.get();
}
return null;
}
}
package com.saite.energy.ids.enums;
import lombok.Data;
@Data
public class ResponseResult<T> {
private int code;
private String msg;
private T data;
public static ResponseResult error(IdsHttpStatusEnum bizCodeEnum) {
ResponseResult r = new ResponseResult<>();
r.setCode(bizCodeEnum.getCode());
r.setMsg(bizCodeEnum.getMsg());
return r;
}
public static ResponseResult ok() {
ResponseResult<?> r = new ResponseResult<>();
r.setCode(IdsHttpStatusEnum.OK.getCode());
return r;
}
public ResponseResult data(T data) {
this.setData(data);
return this;
}
public static ResponseResult error(String dynamicError) {
ResponseResult r = new ResponseResult<>();
r.setCode(IdsHttpStatusEnum.DYNAMIC_ERROR.getCode());
r.setMsg(dynamicError);
return r;
}
public boolean isSuccess() {
return code == IdsHttpStatusEnum.OK.getCode();
}
}