فهرست منبع

资料系统3

plf 4 سال پیش
والد
کامیت
0a99074014

+ 0 - 7
pom.xml

@@ -106,13 +106,6 @@
             <version>1.2.6</version>
         </dependency>
 
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
-            <scope>provided</scope>
-        </dependency>
-
         <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>

+ 4 - 7
src/main/java/com/caimei/www/controller/authorized/document/DocumentAuthController.java

@@ -4,10 +4,7 @@ import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.service.page.DocumentAuthService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * Description
@@ -30,8 +27,8 @@ public class DocumentAuthController {
      * 获取cookie数据,判断是否登录
      */
     @GetMapping("authorization")
-    public JsonModel getAuthorizationCookie() {
-        return documentAuthService.getAuthorizationCookie();
+    public JsonModel getAuthorizationCookie(@CookieValue(value = "authorizationMobile", required = false) String authorizationMobile) {
+        return documentAuthService.getAuthorizationCookie(authorizationMobile);
 
     }
 
@@ -46,7 +43,7 @@ public class DocumentAuthController {
     /**
      * oss短信登录,发送短信验证
      */
-    @PostMapping("/note")
+    @GetMapping("/note")
     public JsonModel ossNote(String mobile, String imgCode, String token) {
         if (StringUtils.isEmpty(mobile) || StringUtils.isEmpty(imgCode) || StringUtils.isEmpty(token)) {
             return JsonModel.error("参数异常");

+ 73 - 0
src/main/java/com/caimei/www/pojo/document/CookieBuilder.java

@@ -0,0 +1,73 @@
+package com.caimei.www.pojo.document;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2020/11/12
+ */
+public class CookieBuilder {
+    private String key;
+    private String value;
+    private String expires;
+    private String domain;
+    private String path;
+
+    public CookieBuilder setKey(String key) {
+        this.key = key;
+        return this;
+    }
+
+    public CookieBuilder setValue(String value) {
+        this.value = value;
+        return this;
+    }
+
+    public CookieBuilder setMaxAge(long ms) {
+        //cookie的过期日期为GMT格式的时间。
+        Date date = new Date(System.currentTimeMillis() + ms);
+        SimpleDateFormat sdf = new SimpleDateFormat("EEE d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
+        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+        this.expires = sdf.format(date);
+        return this;
+    }
+
+    public CookieBuilder setDomain(String domain) {
+        this.domain = domain;
+        return this;
+    }
+
+    public CookieBuilder setPath(String path) {
+        this.path = path;
+        return this;
+    }
+
+    public String build() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(this.key);
+        sb.append("=");
+        sb.append(this.value);
+        sb.append(";");
+        if (null != this.expires) {
+            sb.append("expires=");
+            sb.append(this.expires);
+            sb.append(";");
+        }
+        if (null != this.domain) {
+            sb.append("domain=");
+            sb.append(this.domain);
+            sb.append(";");
+        }
+        if (null != this.path) {
+            sb.append("path=");
+            sb.append(this.path);
+            sb.append(";");
+        }
+        return sb.toString();
+    }
+}

+ 4 - 1
src/main/java/com/caimei/www/service/page/DocumentAuthService.java

@@ -12,8 +12,11 @@ public interface DocumentAuthService {
 
     /**
      * 获取cookie数据,判断是否登录
+     *
+     * @param authorizationMobile cookie中的数据
+     * @return
      */
-    JsonModel getAuthorizationCookie();
+    JsonModel getAuthorizationCookie(String authorizationMobile);
 
     /**
      * 获取图形验证码

+ 10 - 20
src/main/java/com/caimei/www/service/page/impl/DocumentAuthServiceImpl.java

@@ -4,6 +4,7 @@ import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
 import com.caimei.www.mapper.DocumentAuthDao;
 import com.caimei.www.pojo.JsonModel;
+import com.caimei.www.pojo.document.CookieBuilder;
 import com.caimei.www.pojo.document.OssArchive;
 import com.caimei.www.pojo.document.OssArchivePdf;
 import com.caimei.www.pojo.document.OssAuthorization;
@@ -17,15 +18,11 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.Resource;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -50,17 +47,7 @@ public class DocumentAuthServiceImpl implements DocumentAuthService {
     private String domain;
 
     @Override
-    public JsonModel getAuthorizationCookie() {
-        String authorizationMobile = null;
-        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-        Cookie[] cookies = request.getCookies();
-        if (cookies != null && cookies.length > 0) {
-            for (Cookie cookie : cookies) {
-                if ("authorizationMobile".equals(cookie.getName())) {
-                    authorizationMobile = cookie.getValue();
-                }
-            }
-        }
+    public JsonModel getAuthorizationCookie(String authorizationMobile) {
         if (!StringUtils.isEmpty(authorizationMobile)) {
             OssAuthorization ossAuthorization = documentAuthDao.findOssAuthorizationByMobile(authorizationMobile);
             if (ossAuthorization != null) {
@@ -123,10 +110,13 @@ public class DocumentAuthServiceImpl implements DocumentAuthService {
         if (!StringUtils.isEmpty(mobileCode) && code.equals(mobileCode)) {
             OssAuthorization ossAuthorization = documentAuthDao.findOssAuthorizationByMobile(mobile);
             if (ossAuthorization != null) {
-                Cookie authorizationMobile = new Cookie("authorizationMobile", mobile);
-                authorizationMobile.setMaxAge(60 * 60 * 24 * 30);
-                HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
-                response.addCookie(authorizationMobile);
+                HttpHeaders headers = new HttpHeaders();
+                String cookie = new CookieBuilder().setKey("authorizationMobile")
+                        .setValue(mobile)
+                        .setMaxAge(60 * 60 * 24 * 30)
+                        .setPath("/")
+                        .build();
+                headers.add("Set-Cookie", cookie);
                 return JsonModel.success();
             } else {
                 return JsonModel.error(-2, "登录失败");