From cfc6c69613145d5338cea09b700d2b387bfb2ea2 Mon Sep 17 00:00:00 2001
From: "bei.wu" <5306546@qq.com>
Date: Sat, 19 Sep 2020 17:26:36 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=94=A8=E6=88=B7=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E3=80=81=E9=89=B4=E6=9D=83=E3=80=81=E8=8E=B7=E5=8F=96?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-business/pom.xml | 6 --
.../business/ajax/AjaxLoginController.java | 21 +++----
.../business/ajax/AjaxMemberController.java | 5 +-
.../ruoyi/business/ajax/AuthController.java | 17 +++++-
.../java/com/ruoyi/business/model/Member.java | 61 +++++++++++++++++++
ruoyi-common/pom.xml | 5 ++
.../ruoyi/common/annotation/AjaxLogin.java | 2 +-
.../java/com/ruoyi/common}/utils/JWTUtil.java | 2 +-
.../AjaxAuthenticationInterceptor.java | 34 +++++++++++
9 files changed, 127 insertions(+), 26 deletions(-)
create mode 100644 ruoyi-business/src/main/java/com/ruoyi/business/model/Member.java
rename {ruoyi-business/src/main/java/com/ruoyi/business => ruoyi-common/src/main/java/com/ruoyi/common}/utils/JWTUtil.java (98%)
diff --git a/ruoyi-business/pom.xml b/ruoyi-business/pom.xml
index f4f64aebb..27254841e 100644
--- a/ruoyi-business/pom.xml
+++ b/ruoyi-business/pom.xml
@@ -84,12 +84,6 @@
easyexcel
2.2.6
-
-
- io.jsonwebtoken
- jjwt
- 0.7.0
-
diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxLoginController.java b/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxLoginController.java
index ca7841596..59ad59673 100644
--- a/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxLoginController.java
+++ b/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxLoginController.java
@@ -2,13 +2,13 @@ package com.ruoyi.business.ajax;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.business.domain.BizMember;
+import com.ruoyi.business.model.Member;
import com.ruoyi.business.service.IBizMemberService;
import com.ruoyi.business.utils.Encrypt;
-import com.ruoyi.business.utils.JWTUtil;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.JWTUtil;
import com.ruoyi.common.utils.StringUtils;
-import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -33,27 +33,24 @@ public class AjaxLoginController extends BaseController {
return AjaxResult.warn("请输入用户名密码");
}
- BizMember member = bizMemberService.selectBizMemberByMobile(mobile);
- if (Objects.isNull(member)) {
+ BizMember bizMember = bizMemberService.selectBizMemberByMobile(mobile);
+ if (Objects.isNull(bizMember)) {
return AjaxResult.warn("用户名或密码错误");
}
// DES加密
String encryptPassword = Encrypt.encrypt(password);
- if (!encryptPassword.equals(member.getPassword())) {
+ if (!encryptPassword.equals(bizMember.getPassword())) {
return AjaxResult.warn("用户名或密码错误");
}
- if (member.getIsEnable() == 0) {
+ if (bizMember.getIsEnable() == 0) {
return AjaxResult.warn("账户已禁用,请联系系统管理员");
}
- JSONObject object = new JSONObject();
- object.put("id", member.getId());
- object.put("name", member.getMemberName());
- object.put("mobile", member.getMobile());
+ Member member = new Member(bizMember.getId(), bizMember.getMemberName(), bizMember.getMobile());
Long day = 1000L * 60L * 60L;
- String token = JWTUtil.createJWT(object.toJSONString(), day);
- return super.success(token);
+ String token = JWTUtil.createJWT(member.toJsonString(), day);
+ return AjaxResult.success(token);
}
}
diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxMemberController.java b/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxMemberController.java
index 9504840d0..fb6ccefd0 100644
--- a/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxMemberController.java
+++ b/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AjaxMemberController.java
@@ -2,11 +2,9 @@ package com.ruoyi.business.ajax;
import com.ruoyi.business.domain.BizMember;
import com.ruoyi.business.domain.BizMemberAddress;
-import com.ruoyi.business.domain.BizProduct;
import com.ruoyi.business.service.IBizMemberAddressService;
import com.ruoyi.business.service.IBizMemberService;
-import com.ruoyi.business.service.IBizProductService;
-import com.ruoyi.business.service.IBizProductTypeService;
+import com.ruoyi.common.annotation.AjaxLogin;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -16,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
+@AjaxLogin
@RestController
@RequestMapping("/ajax/member")
public class AjaxMemberController extends AuthController {
diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AuthController.java b/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AuthController.java
index 4296b2dcc..5b12cdec4 100644
--- a/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AuthController.java
+++ b/ruoyi-business/src/main/java/com/ruoyi/business/ajax/AuthController.java
@@ -1,13 +1,24 @@
package com.ruoyi.business.ajax;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.business.model.Member;
import com.ruoyi.common.core.controller.BaseController;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
public class AuthController extends BaseController {
+ @Resource
+ private HttpServletRequest request;
//获取前端登录用户ID
- public Long getUserID()
- {
- return 1L;
+ public Long getUserID() {
+ return getMember().getId();
+ }
+
+ public Member getMember() {
+ String jsonString = (String) request.getAttribute("member");
+ return JSONObject.parseObject(jsonString, Member.class);
}
}
diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/model/Member.java b/ruoyi-business/src/main/java/com/ruoyi/business/model/Member.java
new file mode 100644
index 000000000..f9dfecb7a
--- /dev/null
+++ b/ruoyi-business/src/main/java/com/ruoyi/business/model/Member.java
@@ -0,0 +1,61 @@
+package com.ruoyi.business.model;
+
+import com.alibaba.fastjson.JSONObject;
+
+/**
+ * 用户实体
+ * @author bei.wu
+ */
+public class Member {
+
+ /**
+ * 用户主键
+ */
+ private Long id;
+ /**
+ * 用户名称
+ */
+ private String name;
+ /**
+ * 用户手机号
+ */
+ private String mobile;
+
+ public Member() {
+
+ }
+
+ public Member(Long id, String name, String mobile) {
+ this.id = id;
+ this.name = name;
+ this.mobile = mobile;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String toJsonString() {
+ return JSONObject.toJSONString(this);
+ }
+}
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 57e07ef7a..0268d9911 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -101,6 +101,11 @@
javax.servlet-api
+
+ io.jsonwebtoken
+ jjwt
+ 0.7.0
+
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/AjaxLogin.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/AjaxLogin.java
index 25726ae58..a50277635 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/AjaxLogin.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/AjaxLogin.java
@@ -6,7 +6,7 @@ import java.lang.annotation.*;
* 前端接口鉴权
* @author bei.wu
*/
-@Target(ElementType.METHOD)
+@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AjaxLogin
diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/utils/JWTUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JWTUtil.java
similarity index 98%
rename from ruoyi-business/src/main/java/com/ruoyi/business/utils/JWTUtil.java
rename to ruoyi-common/src/main/java/com/ruoyi/common/utils/JWTUtil.java
index ca4125c82..4f920cb05 100644
--- a/ruoyi-business/src/main/java/com/ruoyi/business/utils/JWTUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JWTUtil.java
@@ -1,4 +1,4 @@
-package com.ruoyi.business.utils;
+package com.ruoyi.common.utils;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/AjaxAuthenticationInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/AjaxAuthenticationInterceptor.java
index 2bfbe545c..ffe004bb3 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/AjaxAuthenticationInterceptor.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/AjaxAuthenticationInterceptor.java
@@ -1,10 +1,21 @@
package com.ruoyi.framework.interceptor;
+import com.ruoyi.common.annotation.AjaxLogin;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.json.JSON;
+import com.ruoyi.common.utils.JWTUtil;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
+import io.jsonwebtoken.Claims;
+import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Method;
/**
* /ajax/**
@@ -16,6 +27,29 @@ public class AjaxAuthenticationInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+ if (handler instanceof HandlerMethod) {
+ HandlerMethod handlerMethod = (HandlerMethod) handler;
+ AjaxLogin classAnnotation = ((HandlerMethod) handler).getMethod().getDeclaringClass().getAnnotation(AjaxLogin.class);
+ AjaxLogin annotation = handlerMethod.getMethod().getAnnotation(AjaxLogin.class);
+ if (ObjectUtils.anyNotNull(classAnnotation, annotation)) {
+ String token = request.getHeader("Authorization");
+ if (StringUtils.isBlank(token)) {
+ AjaxResult ajaxResult = AjaxResult.error("请登录后操作");
+ ServletUtils.renderString(response, JSON.marshal(ajaxResult));
+ return false;
+ }
+ try {
+ Claims claims = JWTUtil.parseJWT(token);
+ request.setAttribute("member", claims.getSubject());
+ } catch (Exception e) {
+ AjaxResult ajaxResult = AjaxResult.error("没有权限");
+ ServletUtils.renderString(response, JSON.marshal(ajaxResult));
+ return false;
+ }
+ }
+ return true;
+ }
return super.preHandle(request, response, handler);
}
}