Explorar el Código

增加md5加密、管理员的注册、登陆功能

yaobo hace 7 años
padre
commit
ede081a50d

+ 1 - 0
pom.xml

@@ -115,6 +115,7 @@
 			<artifactId>aliyun-java-sdk-core</artifactId>
 			<version>2.1.7</version>
 		</dependency>
+
 	</dependencies>
 
 	<dependencyManagement>

+ 1 - 1
src/main/java/cn/efunbox/audio/config/AuthConfig.java

@@ -32,7 +32,7 @@ public class AuthConfig extends WebMvcConfigurerAdapter{
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(authInterceptor())
                 .addPathPatterns("/**")
-                .excludePathPatterns("/device/**", "/channel/insert");
+                .excludePathPatterns("/device/**", "/admin/**", "/channel/insert");
     }
 
 }

+ 90 - 0
src/main/java/cn/efunbox/audio/controller/AdminController.java

@@ -0,0 +1,90 @@
+package cn.efunbox.audio.controller;
+
+import cn.efunbox.audio.entity.Admin;
+import cn.efunbox.audio.entity.Channel;
+import cn.efunbox.audio.service.AdminService;
+import cn.efunbox.audio.service.ChannelService;
+import cn.efunbox.audio.util.ApiCode;
+import cn.efunbox.audio.util.Common;
+import cn.efunbox.audio.util.HttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.security.MD5Encoder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import sun.security.provider.MD5;
+import sun.security.rsa.RSASignature;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * Created by yao on 17-9-26.
+ */
+@RestController
+@Slf4j
+@RequestMapping(value = "/admin")
+public class AdminController {
+
+    @Autowired
+    AdminService adminService;
+
+    @RequestMapping(value = "/login" ,method = RequestMethod.POST)
+    public void Search(HttpServletRequest request, HttpServletResponse response){
+        String name = request.getParameter("name");
+        String pwd = request.getParameter("pwd");
+        if(name==null && pwd==null){
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
+            return;
+        }
+        List<Admin> list = adminService.SearchByName(name);
+        if(list==null || list.size()<1){
+            HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
+            return;
+        }
+        Admin admin = list.get(0);
+        String pwdMD5 = Common.getMD5(Common.getMD5(pwd)+admin.getSalt());
+//        System.out.println(pwdMD5);
+//        System.out.println(admin.getPwd());
+        if(pwdMD5.equalsIgnoreCase(admin.getPwd()))
+            HttpUtil.responseOk(request, response);
+        else
+            HttpUtil.responseApiCode(request, response, ApiCode.INVALID_TOKEN);
+
+        return;
+    }
+
+    @RequestMapping(value = "/register", method = RequestMethod.POST)
+    public void Insert(HttpServletRequest request, HttpServletResponse response){
+        String name = request.getParameter("name");
+        String pwd = request.getParameter("pwd");
+        String idChannel = request.getParameter("idChannel");
+        if(name==null || name.length()<4 || pwd==null || pwd.length()<4){
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
+            return;
+        }
+        if(idChannel==null || idChannel.length()==0)
+            idChannel = "0";
+        String salt = UUID.randomUUID().toString().substring(0, 16);
+        String pwdMD5 = Common.getMD5(Common.getMD5(pwd) + salt);
+
+        List<Admin> list = adminService.SearchByName(name);
+        if(list!=null && list.size()>0){
+            HttpUtil.responseApiCode(request, response, ApiCode.RECORD_EXIST);
+            return;
+        }
+        Admin admin = new Admin();
+        admin.setName(name);
+        admin.setPwd(pwdMD5);
+        admin.setSalt(salt);
+        admin.setIdChannel(Long.valueOf(idChannel));
+        admin = adminService.Insert(admin);
+
+        HttpUtil.responseOutWithJson(request, response, admin);
+        return;
+    }
+
+}

+ 59 - 0
src/main/java/cn/efunbox/audio/entity/Admin.java

@@ -0,0 +1,59 @@
+package cn.efunbox.audio.entity;
+
+
+import cn.efunbox.audio.enums.Status;
+import lombok.Data;
+import lombok.ToString;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 系统管理员
+ * Created by yao on 17-9-26.
+ */
+
+
+@Data
+@ToString
+@Entity
+@DynamicInsert
+@DynamicUpdate
+public class Admin implements Serializable, Cloneable {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    //用户名
+    @Column
+    private String name;
+
+    //密码
+    @Column
+    private String pwd;
+
+    //salt
+    @Column
+    private String salt;
+
+    //渠道id
+    @Column
+    private Long idChannel = 0L;
+
+    @Column
+    private int status= Status.ONLINE.getCode();
+
+    @Column
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date created;
+
+    public Object clone() throws CloneNotSupportedException {
+        return super.clone();
+    }
+
+
+}

+ 44 - 0
src/main/java/cn/efunbox/audio/impl/AdminServiceImpl.java

@@ -0,0 +1,44 @@
+package cn.efunbox.audio.impl;
+
+import cn.efunbox.audio.entity.Admin;
+import cn.efunbox.audio.entity.Channel;
+import cn.efunbox.audio.repository.AdminRepo;
+import cn.efunbox.audio.repository.ChannelRepo;
+import cn.efunbox.audio.service.AdminService;
+import cn.efunbox.audio.service.ChannelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by yao on 17-9-26.
+ */
+@Service
+public class AdminServiceImpl implements AdminService {
+
+    @Autowired
+    AdminRepo adminRepo;
+
+    @Override
+    public List<Admin> SearchById(Long id){
+        List<Admin> list = adminRepo.findById(id);
+        return list;
+    }
+
+    @Override
+    public List<Admin> SearchByName(String name){
+        if(name==null || name.isEmpty())
+            return null;
+        List<Admin> list = adminRepo.findByName(name);
+        return list;
+    }
+
+    @Override
+    public Admin Insert(Admin admin){
+        Admin a = adminRepo.save(admin);
+        return a;
+    }
+
+
+}

+ 19 - 0
src/main/java/cn/efunbox/audio/repository/AdminRepo.java

@@ -0,0 +1,19 @@
+package cn.efunbox.audio.repository;
+
+import cn.efunbox.audio.entity.Admin;
+import cn.efunbox.audio.entity.Channel;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * Created by yao on 17-9-26.
+ */
+@Repository
+public interface AdminRepo extends JpaRepository<Admin, Long> {
+
+    public List<Admin> findById(Long id);
+    public List<Admin> findByName(String name);
+
+}

+ 18 - 0
src/main/java/cn/efunbox/audio/service/AdminService.java

@@ -0,0 +1,18 @@
+package cn.efunbox.audio.service;
+
+import cn.efunbox.audio.entity.Admin;
+import cn.efunbox.audio.entity.Channel;
+
+import java.util.List;
+
+/**
+ * Created by yao on 17-9-26.
+ */
+public interface AdminService {
+
+    public List<Admin> SearchById(Long id);
+
+    public List<Admin> SearchByName(String name);
+
+    public Admin Insert(Admin admin);
+}

+ 40 - 0
src/main/java/cn/efunbox/audio/util/Common.java

@@ -0,0 +1,40 @@
+package cn.efunbox.audio.util;
+
+import java.security.MessageDigest;
+
+/**
+ * Created by yao on 17-10-12.
+ */
+public class Common {
+
+    //生成MD5
+    public static String getMD5(String message) {
+        String md5 = "";
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");  // 创建一个md5算法对象
+            byte[] messageByte = message.getBytes("UTF-8");
+            byte[] md5Byte = md.digest(messageByte);              // 获得MD5字节数组,16*8=128位
+            md5 = bytesToHex(md5Byte);                            // 转换为16进制字符串
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return md5;
+    }
+
+    // 二进制转十六进制
+    public static String bytesToHex(byte[] bytes) {
+        StringBuffer hexStr = new StringBuffer();
+        int num;
+        for (int i = 0; i < bytes.length; i++) {
+            num = bytes[i];
+            if(num < 0) {
+                num += 256;
+            }
+            if(num < 16){
+                hexStr.append("0");
+            }
+            hexStr.append(Integer.toHexString(num));
+        }
+        return hexStr.toString().toUpperCase();
+    }
+}