diff --git a/mobile-app/src/main/java/com/ruoyi/data/controller/DataAppController.java b/mobile-app/src/main/java/com/ruoyi/data/controller/DataAppController.java index 74515e350fecae089df68d17f5c5fbd99cf47b68..4bbded9b3a4880e226ca02f9453fba4968214474 100644 --- a/mobile-app/src/main/java/com/ruoyi/data/controller/DataAppController.java +++ b/mobile-app/src/main/java/com/ruoyi/data/controller/DataAppController.java @@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.uuid.UUID; -import com.ruoyi.data.filter.AccessTokenService; +import com.ruoyi.data.filter.first.AccessTokenService; import com.ruoyi.common.core.domain.entity.data.AccessBody; import com.ruoyi.data.entity.DataApp; import com.ruoyi.data.entity.DataKey; @@ -36,62 +36,60 @@ public class DataAppController extends BaseController { public TableDataInfo list(DataApp app) { - DataKey dataKey = new DataKey(); - dataKey.setUserId(getUserId()); - app.setDataKey(dataKey); + app.setUserId(getUserId()); startPage(); List list = dataAppService.selectAppList(app); return getDataTable(list); } - /** - * - * @param appId - * @param userId - * @param appKey - * @return - */ - @GetMapping("/getAccessToken") - public AjaxResult getAccessToken(@RequestParam(required = false)String appId,@RequestParam(required = false)Long userId,@RequestParam(required = false)String appKey){ - if(userId == null){ - userId = getUserId(); - } - AjaxResult ajax = new AjaxResult(); - if(appKey == null || appId == null){ - return AjaxResult.error(301,"请先申请key值"); - }else { - //判断key值是否正确 - if(dataAppService.checkByAppKeyAndAppId(new DataKey(Long.valueOf(appId),userId,appKey)) > 0){ - String accessToken = accessTokenService.createAccessToken(new AccessBody(Long.valueOf(appId),userId,appKey)); - ajax.put("accessToken",accessToken); - }else { - return AjaxResult.error(302,"请输入正确的key值"); - } - - } - return ajax; - } +// /** +// * +// * @param appId +// * @param userId +// * @return +// */ +// @GetMapping("/getAccessToken") +// public AjaxResult getAccessToken(@RequestParam(required = false)String appId,@RequestParam(required = false)Long userId){ +// if(userId == null){ +// userId = getUserId(); +// } +// AjaxResult ajax = new AjaxResult(); +// if(appId == null){ +// return AjaxResult.error(301,"请先申请key值"); +// }else { +// String appKey = dataAppService.checkByAppKeyAndAppId(new DataKey(Long.valueOf(appId),userId)); +// //判断key值是否正确 +// if(appKey != null){ +// String accessToken = accessTokenService.createAccessToken(new AccessBody(Long.valueOf(appId),userId,appKey)); +// ajax.put("accessToken",accessToken); +// }else { +// return AjaxResult.error(302,"请输入正确的key值"); +// } +// +// } +// return ajax; +// } /** * 用户申请key - * @param appId */ - @GetMapping("/getKey") - public AjaxResult getKey(String appId){ - Long userId = getUserId(); + @PostMapping + public AjaxResult getKey(@Validated @RequestBody DataApp dataApp){ String appKey = UUID.randomUUID().toString(); - DataKey dataKey = new DataKey(Long.valueOf(appId),userId,appKey); + dataApp.setAppKey(appKey); + dataApp.setUserId(getUserId()); - return toAjax(dataAppService.insertKey(dataKey)); -// if(row > 0){ -// return getAccessToken(appId,userId,appKey); -// }else { -// return toAjax(row); -// } + if (dataAppService.checkAppNameUnique(dataApp.getAppName()) != null) + { + return AjaxResult.error("应用名称" + dataApp.getAppName() + "'失败,应用名称已存在'"); + } + + dataApp.setCreateBy(getUsername()); + return toAjax(dataAppService.insertKey(dataApp)); } @@ -108,25 +106,25 @@ public class DataAppController extends BaseController { return ajax; } - /** - * 新增应用 - */ - @Log(title = "应用管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody DataApp dataApp) - { - if (dataAppService.checkAppNameUnique(dataApp.getAppName()) != null) - { - return AjaxResult.error("新增应用" + dataApp.getAppName() + "'失败,应用名称已存在'"); - } - else if (dataAppService.checkUrlUnique(dataApp.getUrl()) != null) - { - return AjaxResult.error("新增应用'" + dataApp.getUrl() + "'失败,地址已存在"); - } - dataApp.setCreateBy(getUsername()); - return toAjax(dataAppService.insert(dataApp)); - } - +// /** +// * 新增应用 +// */ +// @Log(title = "应用管理", businessType = BusinessType.INSERT) +// @PostMapping +// public AjaxResult add(@Validated @RequestBody DataApp dataApp) +// { +// if (dataAppService.checkAppNameUnique(dataApp.getAppName()) != null) +// { +// return AjaxResult.error("新增应用" + dataApp.getAppName() + "'失败,应用名称已存在'"); +// } +// else if (dataAppService.checkUrlUnique(dataApp.getUrl()) != null) +// { +// return AjaxResult.error("新增应用'" + dataApp.getUrl() + "'失败,地址已存在"); +// } +// dataApp.setCreateBy(getUsername()); +// return toAjax(dataAppService.insert(dataApp)); +// } +// /** * 修改应用 */ @@ -135,10 +133,6 @@ public class DataAppController extends BaseController { public AjaxResult edit(@Validated @RequestBody DataApp dataApp) { - if (dataAppService.checkUrlUnique(dataApp.getUrl()) != null) - { - return AjaxResult.error("修改应用'" + dataApp.getUrl() + "'失败,地址已存在"); - } dataApp.setUpdateBy(getUsername()); return toAjax(dataAppService.updataApp(dataApp)); } @@ -154,4 +148,9 @@ public class DataAppController extends BaseController { return toAjax(dataAppService.deleteAppById(ids)); } + @RequestMapping("/test") + public void getAppKey(){ + System.out.println(dataAppService.selectAppKeyByAppId(1l)); + } + } diff --git a/mobile-app/src/main/java/com/ruoyi/data/entity/DataApp.java b/mobile-app/src/main/java/com/ruoyi/data/entity/DataApp.java index 753957f74cb58fd7ed4cd722bb174e23795b7b55..f9207994687259a421e5294aa1c1fdcfcfb92883 100644 --- a/mobile-app/src/main/java/com/ruoyi/data/entity/DataApp.java +++ b/mobile-app/src/main/java/com/ruoyi/data/entity/DataApp.java @@ -11,29 +11,52 @@ public class DataApp extends BaseEntity { private static final long serialVersionUID = 1L; - //应用id + //主键 private Long id; + //应用id(一个用户一个唯一的) + private Long appId; //应用名称 private String appName; //应用简介 private String text; - //分类 - private String classify; - //访问接口 - private String url; - //用户key值 - private DataKey dataKey; - + private String appKey; + //用户id + private Long userId; //状态吗 (是否被申请) private int status; - public Long getId() { - return id; + + + public DataApp(Long userId, String appKey) { + this.userId = userId; + this.appKey = appKey; + } + + public DataApp(Long appId, String appKey, Long userId) { + this.appId = appId; + this.appKey = appKey; + this.userId = userId; + } + + public DataApp() { + } + + public DataApp(Long appId, String appName, String text, String appKey, Long userId, int status) { + this.appId = appId; + this.appName = appName; + this.text = text; + this.appKey = appKey; + this.userId = userId; + this.status = status; + } + + public Long getAppId() { + return appId; } - public void setId(Long id) { - this.id = id; + public void setAppId(Long appId) { + this.appId = appId; } public String getAppName() { @@ -52,21 +75,20 @@ public class DataApp extends BaseEntity { this.text = text; } - - public String getClassify() { - return classify; + public String getAppKey() { + return appKey; } - public void setClassify(String classify) { - this.classify = classify; + public void setAppKey(String appKey) { + this.appKey = appKey; } - public DataKey getDataKey() { - return dataKey; + public Long getUserId() { + return userId; } - public void setDataKey(DataKey dataKey) { - this.dataKey = dataKey; + public void setUserId(Long userId) { + this.userId = userId; } public int getStatus() { @@ -76,12 +98,4 @@ public class DataApp extends BaseEntity { public void setStatus(int status) { this.status = status; } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } } diff --git a/mobile-app/src/main/java/com/ruoyi/data/entity/DataKey.java b/mobile-app/src/main/java/com/ruoyi/data/entity/DataKey.java index c3e4824267d71bcd312942aa53818b9dc7a22eb7..15e010051338c2fb10e5a36506b89adcbd02fd5b 100644 --- a/mobile-app/src/main/java/com/ruoyi/data/entity/DataKey.java +++ b/mobile-app/src/main/java/com/ruoyi/data/entity/DataKey.java @@ -29,6 +29,11 @@ public class DataKey extends BaseEntity { this.url = url; } + public DataKey(Long appId, Long userId) { + this.appId = appId; + this.userId = userId; + } + public DataKey() { } diff --git a/mobile-app/src/main/java/com/ruoyi/data/mapper/DataAppMapper.java b/mobile-app/src/main/java/com/ruoyi/data/mapper/DataAppMapper.java index cbd8ed75dc16b4e77fcb1d7076b103d00ee1aed7..6aa1d8673677f0a40df683a1b7569cfb290e1d40 100644 --- a/mobile-app/src/main/java/com/ruoyi/data/mapper/DataAppMapper.java +++ b/mobile-app/src/main/java/com/ruoyi/data/mapper/DataAppMapper.java @@ -16,10 +16,10 @@ public interface DataAppMapper { /** * 用户申请应用key值 - * @param dataKey + * @param dataApp * @return */ - public int insertKey(DataKey dataKey); + public int insertKey(DataApp dataApp); /** @@ -29,7 +29,6 @@ public interface DataAppMapper { */ public DataApp selectById(Long id); - /** * 校验用户名称是否唯一 * @@ -38,14 +37,6 @@ public interface DataAppMapper { */ public DataApp checkAppNameUnique(String appName); - /** - * 校验手机号码是否唯一 - * - * @param url 地址 - * @return 结果 - */ - public DataApp checkUrlUnique(String url); - /** * 新增应用信息 * @param dataApp @@ -82,5 +73,12 @@ public interface DataAppMapper { * @param dataKey * @return */ - public List checkByAppKeyAndAppId(DataKey dataKey); + public List checkByAppKeyAndAppId(DataKey dataKey); + + /** + * 通过appId获取appKey + * @param appId + * @return + */ + public String selectAppKeyByAppId(Long appId); } diff --git a/mobile-app/src/main/java/com/ruoyi/data/service/IDataAppService.java b/mobile-app/src/main/java/com/ruoyi/data/service/IDataAppService.java index 4220cf84d6567ea2154850d83bbb47df87822c36..061c3628739e6a95c7a21b80892af95c28413929 100644 --- a/mobile-app/src/main/java/com/ruoyi/data/service/IDataAppService.java +++ b/mobile-app/src/main/java/com/ruoyi/data/service/IDataAppService.java @@ -23,10 +23,10 @@ public interface IDataAppService { /** * 用户申请应用key值 - * @param dataKey + * @param dataApp * @return */ - public int insertKey(DataKey dataKey); + public int insertKey(DataApp dataApp); /** @@ -44,14 +44,6 @@ public interface IDataAppService { */ public DataApp checkAppNameUnique(String appName); - /** - * 校验手机号码是否唯一 - * - * @param url 地址 - * @return 结果 - */ - public DataApp checkUrlUnique(String url); - /** * 新增应用信息 * @param dataApp @@ -87,6 +79,13 @@ public interface IDataAppService { * @param dataKey * @return */ - public int checkByAppKeyAndAppId(DataKey dataKey); + public String checkByAppKeyAndAppId(DataKey dataKey); + + /** + * 通过appId获取appKey + * @param appId + * @return + */ + public String selectAppKeyByAppId(Long appId); } diff --git a/mobile-app/src/main/java/com/ruoyi/data/service/impl/DataAppServiceImpl.java b/mobile-app/src/main/java/com/ruoyi/data/service/impl/DataAppServiceImpl.java index 78f4f9f51faefa7b680e7e959065deb08af887a3..48675801bfb353bbfde05ea508d4b669344e461c 100644 --- a/mobile-app/src/main/java/com/ruoyi/data/service/impl/DataAppServiceImpl.java +++ b/mobile-app/src/main/java/com/ruoyi/data/service/impl/DataAppServiceImpl.java @@ -25,12 +25,12 @@ public class DataAppServiceImpl implements IDataAppService { /** * 用户申请应用key值 - * @param dataKey + * @param dataApp * @return */ @Override - public int insertKey(DataKey dataKey){ - return dataAppMapper.insertKey(dataKey); + public int insertKey(DataApp dataApp){ + return dataAppMapper.insertKey(dataApp); } @@ -49,15 +49,6 @@ public class DataAppServiceImpl implements IDataAppService { return dataAppMapper.checkAppNameUnique(appName); } - /** - * 校验url是否唯一 - * - * @param url 地址 - * @return 结果 - */ - public DataApp checkUrlUnique(String url){ - return dataAppMapper.checkUrlUnique(url); - } /** * 新增应用信息 @@ -105,7 +96,12 @@ public class DataAppServiceImpl implements IDataAppService { } @Override - public int checkByAppKeyAndAppId(DataKey dataKey) { - return dataAppMapper.checkByAppKeyAndAppId(dataKey).size(); + public String checkByAppKeyAndAppId(DataKey dataKey) { + return dataAppMapper.checkByAppKeyAndAppId(dataKey).get(0).getAppKey(); + } + + @Override + public String selectAppKeyByAppId(Long appId) { + return dataAppMapper.selectAppKeyByAppId(appId); } } diff --git a/mobile-app/src/main/resources/mapper/data/DataAppMapper.xml b/mobile-app/src/main/resources/mapper/data/DataAppMapper.xml index 0b9586fcab37862ecc0e61dbd7934849ed23fbc7..a380079b141117b48f566f4a0d29ae2ceef572bd 100755 --- a/mobile-app/src/main/resources/mapper/data/DataAppMapper.xml +++ b/mobile-app/src/main/resources/mapper/data/DataAppMapper.xml @@ -5,82 +5,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - + + + + - - - - - - - - - - - select id, app_name, text, url,classify, create_by, create_time ,update_by,update_time ,remark - from data_app - - + select * from data_app and app_id = #{appId} and user_id = #{userId} - and app_key = #{appKey} - insert into data_key ( + insert into data_app ( - app_id, + app_name, + text, user_id, app_key, + remark, create_time ) values ( - - #{appId} , + #{appName} , + #{text} , #{userId}, #{appKey} , + #{remark} , sysdate() ) @@ -108,15 +92,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - delete from data_app where id in + delete from data_app where app_id in #{id} @@ -127,14 +105,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" app_name = #{appName}, text = #{text}, - url = #{url}, + remark = #{remark}, update_time = sysdate() - where id = #{id} + where app_id = #{appId} - + select * from data_app where user_id = #{userId} + + + diff --git a/mobile-app/src/test/java/test.java b/mobile-app/src/test/java/test.java index 666bbb3657a7cb75e885c28f104a3a2e493092c3..2218bb6208fe7dc38d59de7c4a4e9b7e4c7e838f 100644 --- a/mobile-app/src/test/java/test.java +++ b/mobile-app/src/test/java/test.java @@ -1,7 +1,7 @@ - +import com.ruoyi.data.service.IDataAppService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; public class test { - public static void main(String[] args) { - } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 9229f5a33337586c08ac032483390633cb910570..f6e9b42b8a650b358a1bfaa4a0268db7e6f6a816 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -8,10 +8,7 @@ import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.log.domain.SysVisitTimeLog; import com.ruoyi.log.manager.factory.AsyncLogFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysMenu; @@ -42,11 +39,10 @@ public class SysLoginController /** * 登录方法 * - * @param loginBody 登录信息 * @return 结果 */ - @PostMapping("/login") - public AjaxResult login(@RequestBody LoginBody loginBody) + @RequestMapping("/login") + public AjaxResult login(LoginBody loginBody) { AjaxResult ajax = AjaxResult.success(); // 生成令牌 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java index 762f1d9961961d24ab2489e396f4a7f8a733ddc4..07279ed2a5e3008c41b33df8ab8511f9b5248329 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java @@ -2,9 +2,7 @@ package com.ruoyi.web.controller.system; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.RegisterBody; @@ -25,13 +23,13 @@ public class SysRegisterController extends BaseController @Autowired private ISysConfigService configService; - @PostMapping("/register") - public AjaxResult register(@RequestBody RegisterBody user) + @RequestMapping("/register") + public AjaxResult register(RegisterBody user) { - if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) - { - return error("当前系统没有开启注册功能!"); - } +// if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) +// { +// return error("当前系统没有开启注册功能!"); +// } String msg = registerService.register(user); return StringUtils.isEmpty(msg) ? success() : error(msg); } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 483d807bf204706ab0c198b7922473435054d39b..22332b857363fb9b640864739f06ef199fb26103 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -101,6 +101,11 @@ accessToken: secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 30 + #排除链接 + accessExcludes: /login,/register,/captchaImage + # 匹配连接 +# accessUrlPatterns: + accessUrlPatterns: /system/*,/monitor/*,/tool/*,/chat/*,/app/*,/file/*,/log/* # MyBatis配置 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java index 868a1fc520430cac797c15d9b80252d741a62ccb..b013b27ca5e343a9665ee0fc2701e9f5584c19bd 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java @@ -1,11 +1,38 @@ package com.ruoyi.common.core.domain.model; +import com.ruoyi.common.core.domain.entity.SysUser; + /** * 用户注册对象 * * @author ruoyi */ -public class RegisterBody extends LoginBody +public class RegisterBody extends SysUser { + /** + * 验证码 + */ + private String code; + + /** + * 唯一标识 + */ + private String uuid = ""; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenConfig.java similarity index 84% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenConfig.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenConfig.java index b8278fc38e4df51e5e09da50b243edc44cb516a2..0fe75fb6b2203de214635814808c936270337af9 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenConfig.java @@ -1,12 +1,9 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; -import com.ruoyi.common.core.redis.RedisCache; -import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; -import org.springframework.beans.factory.annotation.Autowired; +import com.ruoyi.data.filter.first.JwtAccessTokenFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.ProviderManager; import org.springframework.security.config.annotation.web.HttpSecurityBuilder; @@ -36,8 +33,6 @@ public class AccessTokenConfig , B extend provider.add(accessTokenProvider); ProviderManager providerManager = new ProviderManager(provider); jwtAccessTokenFilter.setAuthenticationManager(providerManager); - //注入accessTokenService -// jwtAccessTokenFilter.setAccessTokenService(accessTokenService); jwtAccessTokenFilter.setSessionAuthenticationStrategy(new NullAuthenticatedSessionStrategy()); jwtAccessTokenFilter.setAuthenticationSuccessHandler(accessTokenSuccessHandler()); jwtAccessTokenFilter.setAuthenticationFailureHandler(accessTokenFailureHandler()); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenFailureHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenFailureHandler.java similarity index 96% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenFailureHandler.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenFailureHandler.java index 7e4c7fe8ecaa20dba651827ab8077ac25b7fddca..c15beb4fec21ce3318de8770f96882794724ba44 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenFailureHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenFailureHandler.java @@ -1,4 +1,4 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; import com.alibaba.fastjson.JSON; import com.ruoyi.common.core.domain.AjaxResult; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenProvider.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenProvider.java similarity index 96% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenProvider.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenProvider.java index e95bc057cdd7efa4966f6767d8eb90231ccbe50c..d4e21016270e17bc39bebfea01f70766962c2883 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenProvider.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenProvider.java @@ -1,4 +1,4 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; import com.ruoyi.common.core.domain.entity.data.AccessBody; import com.ruoyi.common.core.domain.entity.data.JwtAccessToken; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenService.java similarity index 98% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenService.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenService.java index 4481f984321854b806ff94165327fcfd85aa05cc..1928669d1f5f2bca803d2f27e12206c615dbdcf6 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenService.java @@ -1,4 +1,4 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.redis.RedisCache; @@ -8,6 +8,7 @@ import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.common.core.domain.entity.data.AccessBody; +import com.ruoyi.data.filter.GetBeanUtil; import eu.bitwalker.useragentutils.UserAgent; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenSuccessHandler.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenSuccessHandler.java similarity index 97% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenSuccessHandler.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenSuccessHandler.java index df2359f5cf5432df04f7e683d50607fb3f10428a..849c584074b5c31d661cc96fb6369cf2f9c02dd8 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/AccessTokenSuccessHandler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/AccessTokenSuccessHandler.java @@ -1,4 +1,4 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; import com.alibaba.fastjson.JSON; import com.ruoyi.common.core.domain.AjaxResult; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/JwtAccessTokenFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/JwtAccessTokenFilter.java similarity index 93% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/JwtAccessTokenFilter.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/JwtAccessTokenFilter.java index e9d75accb8e14b123484519a0dd875be63d79fd3..903256537d99d8ca357bd3109bb7bd1b6a31d9c3 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/JwtAccessTokenFilter.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/JwtAccessTokenFilter.java @@ -1,16 +1,16 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; import com.ruoyi.common.core.domain.entity.data.JwtAccessToken; import com.ruoyi.common.core.domain.entity.data.AccessBody; -import org.springframework.beans.BeanWrapper; -import org.springframework.beans.BeansException; +import com.ruoyi.data.filter.GetBeanUtil; +import com.ruoyi.data.filter.first.AccessTokenFailureHandler; +import com.ruoyi.data.filter.first.AccessTokenService; +import com.ruoyi.data.filter.first.AccessTokenSuccessHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter; import org.springframework.security.web.util.matcher.RequestHeaderRequestMatcher; -import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/RewriteAccessDenyFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/RewriteAccessDenyFilter.java similarity index 96% rename from ruoyi-framework/src/main/java/com/ruoyi/data/filter/RewriteAccessDenyFilter.java rename to ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/RewriteAccessDenyFilter.java index 735d5935bd4d3e238955b1c47881147e65dba7ee..c8c0aa3507014e9f1cd8ebdf35f21fa452031eb0 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/RewriteAccessDenyFilter.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/first/RewriteAccessDenyFilter.java @@ -1,4 +1,4 @@ -package com.ruoyi.data.filter; +package com.ruoyi.data.filter.first; import com.alibaba.fastjson.JSON; import com.ruoyi.common.constant.HttpStatus; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/AccessFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/AccessFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..a177f8c796ed797ed433368541c437593210e624 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/AccessFilter.java @@ -0,0 +1,38 @@ +package com.ruoyi.data.filter.second; + + +import com.ruoyi.data.filter.GetBeanUtil; +import com.ruoyi.data.filter.second.entity.ApiRequest; +import com.ruoyi.data.filter.second.service.ApiAuthencator; +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class AccessFilter implements Filter { + + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + + HttpServletRequest request = (HttpServletRequest)servletRequest; + HttpServletResponse response = (HttpServletResponse)servletResponse; + + StringBuffer url = request.getRequestURL(); + String appId = request.getParameter("appId"); + String token = request.getParameter("token"); + String currentTime = request.getParameter("timeStamp"); + + ApiAuthencator apiAuthencator = GetBeanUtil.getBean(ApiAuthencator.class); + + int code = apiAuthencator.auth(new ApiRequest(token,Long.valueOf(appId),Long.valueOf(currentTime)),request,response); + + if(code != 1){ + return; + } + filterChain.doFilter(request,response); + + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/constant/AuthConstants.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/constant/AuthConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..ae4730067a6271fc41f75bc6652a7fef18fee911 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/constant/AuthConstants.java @@ -0,0 +1,16 @@ +package com.ruoyi.data.filter.second.constant; + +/** + * Created by wanggenshen + * Date: on 2019/12/10 20:04. + * Description: 常量 + */ +public class AuthConstants { + + public static final String APP_KEY = "appKey"; + public static final String TIME_STAMP = "timeStamp"; + public static final String APP_ID = "appId"; + public static final String TOKEN = "token"; + + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/entity/ApiRequest.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/entity/ApiRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..000194a7e37db8b9d1b69c129cca71891f2bfedc --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/entity/ApiRequest.java @@ -0,0 +1,100 @@ +package com.ruoyi.data.filter.second.entity; + + +import com.ruoyi.data.filter.second.constant.AuthConstants; + +import java.util.Map; + +public class ApiRequest { + + /** + * 加密后的token + */ + private String token; + + /** + * 申请唯一标识 + */ + private Long appId; + + /** + * 调用方身份标识 + */ + private String appKey; + + /** + * 调用方调用时的时间戳 + */ + private long timeStamp; + + + public ApiRequest(String token, Long appId, long timeStamp) { + this.token = token; + this.appId = appId; + this.timeStamp = timeStamp; + } + + + public ApiRequest( String token, Long appId, String appKey, long timeStamp) { + this.token = token; + this.appId = appId; + this.appKey = appKey; + this.timeStamp = timeStamp; + } + + + public static ApiRequest buildApiRequest(Map paramsMap) { + if (paramsMap == null || paramsMap.size() < 1) { + return null; + } + String token = paramsMap.containsKey(AuthConstants.TOKEN) ? paramsMap.get(AuthConstants.TOKEN) : null; + String appKey = paramsMap.containsKey(AuthConstants.APP_KEY) ? paramsMap.get(AuthConstants.APP_KEY) : null; + String appId = paramsMap.containsKey(AuthConstants.APP_ID) ? paramsMap.get(AuthConstants.APP_ID) : null; + String timeStamp = paramsMap.containsKey(AuthConstants.TIME_STAMP) ? paramsMap.get(AuthConstants.TIME_STAMP) : null; + + return new ApiRequest( token, Long.valueOf(appId), appKey, Long.valueOf(timeStamp)); + + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public Long getAppId() { + return appId; + } + + public void setAppId(Long appId) { + this.appId = appId; + } + + public String getAppKey() { + return appKey; + } + + public void setAppKey(String appKey) { + this.appKey = appKey; + } + + public long getTimeStamp() { + return timeStamp; + } + + public void setTimeStamp(long timeStamp) { + this.timeStamp = timeStamp; + } + + @Override + public String toString() { + return "ApiRequest{" + + ", token='" + token + '\'' + + ", appId=" + appId + + ", appKey='" + appKey + '\'' + + ", timeStamp=" + timeStamp + + '}'; + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/ApiAuthencator.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/ApiAuthencator.java new file mode 100644 index 0000000000000000000000000000000000000000..f0d1cee98e6eeba5c2470f4abafd0737147a9025 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/ApiAuthencator.java @@ -0,0 +1,12 @@ +package com.ruoyi.data.filter.second.service; + + +import com.ruoyi.data.filter.second.entity.ApiRequest; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface ApiAuthencator { + + int auth(ApiRequest apiRequest , ServletRequest request, ServletResponse response); +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/AuthToken.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/AuthToken.java new file mode 100644 index 0000000000000000000000000000000000000000..2cc27ac75cb39bd1f3d0a4e5e59c5b263c4d495d --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/AuthToken.java @@ -0,0 +1,106 @@ +package com.ruoyi.data.filter.second.service; + +import com.ruoyi.data.filter.second.constant.AuthConstants; +import com.ruoyi.data.filter.second.entity.ApiRequest; +import com.ruoyi.data.filter.second.util.MD5Util; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by wanggenshen + * Date: on 2019/12/5 23:43. + * Description: Token类 + */ +public class AuthToken { + + /** + * 时间窗口为10min, 单位毫秒 + */ + private static final long TIME_WINDOW_MS = 10 * 60 * 1000; + + /** + * token + */ + private String token; + + /** + * token生成时间 + */ + private long createTime; + + /** + * token过期时间 + */ + private long expiredTimeWindow = TIME_WINDOW_MS; + + public AuthToken() { + } + + public AuthToken(String token, long createTime) { + this.token = token; + this.createTime = createTime; + } + + public AuthToken(String token, long createTime, long expiredTimeWindow) { + this.token = token; + this.createTime = createTime; + this.expiredTimeWindow = expiredTimeWindow; + } + + + /** + * 生成身份令牌 + * @param appId + * @param appKey + * @param timeStamp + * @return + */ + public static AuthToken generateToken( Long appId, String appKey, long timeStamp) { + + // 使用map存储, 加密的时候可以不区分参数顺序 + Map paramsMap = new HashMap<>(8); + paramsMap.put(AuthConstants.APP_KEY, appKey); + paramsMap.put(AuthConstants.TIME_STAMP, String.valueOf(timeStamp)); + paramsMap.put(AuthConstants.APP_ID, String.valueOf(appId)); +// ApiRequest apiRequest = ApiRequest.buildApiRequest(paramsMap); + + try { + String serverToken = MD5Util.encrypt(ApiRequest.buildApiRequest(paramsMap).toString()); + return new AuthToken(serverToken, timeStamp); + } catch (Exception e) { +// log.error("encrypt exception : " + e.toString()); + return null; + } + } + + public String getToken() { + return this.token; + } + + /** + * 判断token是否过期 + * + * @return + */ + public boolean isExpired() { + + long currentTime = System.currentTimeMillis(); + // 超过窗口时间, 则视为过期 + if ((currentTime - this.createTime) > expiredTimeWindow) { + return true; + } + return false; + } + + /** + * 判断客户端和服务端的token是否相等 + * + * @param authToken + * @return + */ + public boolean isMatched(AuthToken authToken) { + return this.token.equals(authToken.getToken()); + } + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/DataAppService.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/DataAppService.java new file mode 100644 index 0000000000000000000000000000000000000000..8bb36694f2f02f91cf5add3b78b99f133a603226 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/DataAppService.java @@ -0,0 +1,12 @@ +package com.ruoyi.data.filter.second.service; + + +public interface DataAppService { + + /** + * 通过appId获取appKey + * @param appId + * @return + */ + public String selectAppKeyByAppId(Long appId); +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/DefaultApiAuthencatorImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/DefaultApiAuthencatorImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..5616bc0c6672e732120f9e21089650cefa4ad84f --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/DefaultApiAuthencatorImpl.java @@ -0,0 +1,58 @@ +package com.ruoyi.data.filter.second.service; + +import com.alibaba.fastjson.JSON; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.ServletUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.data.filter.second.entity.ApiRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +public class DefaultApiAuthencatorImpl implements ApiAuthencator { + + @Autowired + private DataAppService dataAppService; + + @Override + public int auth(ApiRequest apiRequest, ServletRequest request , ServletResponse response) { + Long appId = apiRequest.getAppId(); + String token = apiRequest.getToken(); + long timeStamp = apiRequest.getTimeStamp(); + + String appKey = dataAppService.selectAppKeyByAppId(appId); + + if(appKey == null || appKey == ""){ + int code = 503; + String msg = StringUtils.format("请输入正确的key值", ((HttpServletRequest)request).getRequestURI()); + ServletUtils.renderString((HttpServletResponse) response, JSON.toJSONString(AjaxResult.error(code, msg))); + return code; + } + + AuthToken clientAuthToken = new AuthToken(token, timeStamp); + if (clientAuthToken.isExpired()) { + + int code = 502; + String msg = StringUtils.format("token 已过期", ((HttpServletRequest)request).getRequestURI()); + ServletUtils.renderString((HttpServletResponse) response, JSON.toJSONString(AjaxResult.error(code, msg))); + return code; + } + + AuthToken serverAuthToken = AuthToken.generateToken(appId, appKey, timeStamp); + if (serverAuthToken == null || !serverAuthToken.isMatched(clientAuthToken)) { + int code = 501; + String msg = StringUtils.format("您无权访问该接口", ((HttpServletRequest)request).getRequestURI()); + ServletUtils.renderString((HttpServletResponse) response, JSON.toJSONString(AjaxResult.error(code, msg))); + + return code; + } + + return 1; + + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/impl/DataAppServiceImpl2.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/impl/DataAppServiceImpl2.java new file mode 100644 index 0000000000000000000000000000000000000000..de7eb4611ca0b7177bf085dbb1131fbfe8d33dfa --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/impl/DataAppServiceImpl2.java @@ -0,0 +1,19 @@ +package com.ruoyi.data.filter.second.service.impl; + +import com.ruoyi.data.filter.second.service.DataAppService; +import com.ruoyi.data.filter.second.service.mapper.DataappMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +@Service +public class DataAppServiceImpl2 implements DataAppService { + + @Autowired + private DataappMapper dataappMapper; + + @Override + public String selectAppKeyByAppId(Long appId) { + return dataappMapper.selectAppKeyByAppId(appId); + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/mapper/DataappMapper.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/mapper/DataappMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..7f656086da16e2176073a18c0f1bbe58fcbf85bc --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/service/mapper/DataappMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.data.filter.second.service.mapper; + +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DataappMapper { + + /** + * 通过appId获取appKey + * @param appId + * @return + */ + public String selectAppKeyByAppId(Long appId); +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/util/MD5Util.java b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/util/MD5Util.java new file mode 100644 index 0000000000000000000000000000000000000000..6567b71e718e97628c2137398e7e01985df5d226 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/data/filter/second/util/MD5Util.java @@ -0,0 +1,37 @@ +package com.ruoyi.data.filter.second.util; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; + + +public class MD5Util { + + public static String encrypt(String input) throws Exception{ + MessageDigest md5; + try { + md5 = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + throw new NoSuchAlgorithmException(e.toString()); + } + + try { + byte[] byteArray = input.getBytes("UTF-8"); + byte[] md5Bytes = md5.digest(byteArray); + StringBuffer hexValue = new StringBuffer(); + for (int i = 0; i < md5Bytes.length; i++) { + int val = ((int) md5Bytes[i]) & 0xff; + if (val < 16) { + hexValue.append("0"); + } + hexValue.append(Integer.toHexString(val)); + } + return hexValue.toString(); + } catch (Exception e) { + throw new UnsupportedEncodingException(e.toString()); + } + + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java index 87b37506ffd3a4aa1869cec09e2417ab4a8d41b6..656e4a1ff393da4b98bcb1168865ff5ab00b999c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java @@ -3,6 +3,8 @@ package com.ruoyi.framework.config; import java.util.HashMap; import java.util.Map; import javax.servlet.DispatcherType; + +import com.ruoyi.data.filter.second.AccessFilter; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.web.servlet.FilterRegistrationBean; @@ -27,6 +29,12 @@ public class FilterConfig @Value("${xss.urlPatterns}") private String urlPatterns; + @Value("${accessToken.accessExcludes}") + private String accessExcludes; + + @Value("${accessToken.accessUrlPatterns}") + private String accessUrlPatterns; + @SuppressWarnings({ "rawtypes", "unchecked" }) @Bean public FilterRegistrationBean xssFilterRegistration() @@ -55,4 +63,18 @@ public class FilterConfig return registration; } + @Bean + public FilterRegistrationBean accessFilterRegistration() + { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new AccessFilter()); + registration.addUrlPatterns(StringUtils.split(accessUrlPatterns, ",")); + registration.setName("accessFilter"); + registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE); + Map initParameters = new HashMap(); + initParameters.put("excludes", accessExcludes); + registration.setInitParameters(initParameters); + return registration; + } + } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index ba9db4728605f5590c31707d2b18a207b8097986..fe2feb650ae1fa4303cdc100089745b52d7798d4 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -1,8 +1,6 @@ package com.ruoyi.framework.config; -import com.ruoyi.data.filter.AccessTokenConfig; -import com.ruoyi.data.filter.JwtAccessTokenFilter; -import com.ruoyi.data.filter.RewriteAccessDenyFilter; +import com.ruoyi.data.filter.second.AccessFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpMethod; @@ -45,20 +43,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter @Autowired private AuthenticationEntryPointImpl unauthorizedHandler; - - /** - * access_token认证过滤器 - */ - @Autowired - private JwtAccessTokenFilter jwtAccessTokenFilter; - - /** - * 自定义无权访问拦截器返回值 - */ - @Autowired - private RewriteAccessDenyFilter rewriteAccessDenyFilter; - - +// @Autowired +// private AccessFilter accessFilter; /** * 退出处理类 */ @@ -148,9 +134,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class); //添加自定义拦截器 -// httpSecurity.addFilterAfter(jwtAccessTokenFilter, JwtAuthenticationTokenFilter.class) -// .exceptionHandling().accessDeniedHandler(rewriteAccessDenyFilter); - httpSecurity.apply(new AccessTokenConfig<>()); +// httpSecurity.addFilterAfter(accessFilter, JwtAuthenticationTokenFilter.class); +// httpSecurity.apply(new AccessTokenConfig<>()); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java index 0f2db93843f8b67e77ef9a50f0d01a04b81c9c71..1c69ee3601af727b3995a9c8bd077736282fd547 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java @@ -39,13 +39,13 @@ public class SysRegisterService */ public String register(RegisterBody registerBody) { - String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword(); + String msg = "", username = registerBody.getUserName(), password = registerBody.getPassword(); boolean captchaOnOff = configService.selectCaptchaOnOff(); // 验证码开关 if (captchaOnOff) { - validateCaptcha(username, registerBody.getCode(), registerBody.getUuid()); +// validateCaptcha(username, registerBody.getCode(), registerBody.getUuid()); } if (StringUtils.isEmpty(username)) @@ -56,27 +56,27 @@ public class SysRegisterService { msg = "用户密码不能为空"; } - else if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { - msg = "账户长度必须在2到20个字符之间"; - } - else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { - msg = "密码长度必须在5到20个字符之间"; - } +// else if (username.length() < UserConstants.USERNAME_MIN_LENGTH +// || username.length() > UserConstants.USERNAME_MAX_LENGTH) +// { +// msg = "账户长度必须在2到20个字符之间"; +// } +// else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH +// || password.length() > UserConstants.PASSWORD_MAX_LENGTH) +// { +// msg = "密码长度必须在5到20个字符之间"; +// } else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) { msg = "保存用户'" + username + "'失败,注册账号已存在"; } else { - SysUser sysUser = new SysUser(); - sysUser.setUserName(username); - sysUser.setNickName(username); - sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword())); - boolean regFlag = userService.registerUser(sysUser); +// SysUser sysUser = new SysUser(); +// sysUser.setUserName(username); +// sysUser.setNickName(username); + registerBody.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword())); + boolean regFlag = userService.registerUser(registerBody); if (!regFlag) { msg = "注册失败,请联系系统管理人员"; diff --git a/ruoyi-framework/src/main/resource/mapper/DataappMapper.xml b/ruoyi-framework/src/main/resource/mapper/DataappMapper.xml new file mode 100755 index 0000000000000000000000000000000000000000..6b606fb51b85b033c4e45ba8e44ed1a058f71032 --- /dev/null +++ b/ruoyi-framework/src/main/resource/mapper/DataappMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js index bfcf49f016c6c0ad04d2897a4f076f763448b575..d04b7e5566729f98965c53e54d0676b72f97f00f 100644 --- a/ruoyi-ui/src/api/login.js +++ b/ruoyi-ui/src/api/login.js @@ -10,8 +10,8 @@ export function login(username, password) { } return request({ url: '/login', - method: 'post', - data: data + method: 'get', + params: data }) } diff --git a/ruoyi-ui/src/views/data/app/index.vue b/ruoyi-ui/src/views/data/app/index.vue index df168bd72aac71624104c67e444ad4a19ea5faf6..f0aa71782033fc8f9c784fda5636d4f9ce17f732 100644 --- a/ruoyi-ui/src/views/data/app/index.vue +++ b/ruoyi-ui/src/views/data/app/index.vue @@ -22,15 +22,17 @@ - - 新增 - + + + 申请 + + - + - - + + - - - + + + + + + + + + + + + + + + + + + + + + @@ -111,18 +113,18 @@ + + + + + - + - - - - - @@ -189,9 +191,6 @@ rules: { appName: [ { required: true, message: "应用名称不能为空", trigger: "blur" } - ], - url: [ - { required: true, message: "应用名称不能为空", trigger: "blur" } ] } }; @@ -215,20 +214,20 @@ }, /** 申请按钮操作 */ - handleApplyKey(row) { - const appId = row.id; - applyKey(appId).then(response => { - // setAccessToken(response.accessToken); - this.getList(); - }); - }, + // handleApplyKey(row) { + // const appId = row.id; + // applyKey(appId).then(response => { + // // setAccessToken(response.accessToken); + // this.getList(); + // }); + // }, // 表单重置 reset() { this.form = { appName: undefined, text :undefined, - url: undefined + applyKey :undefined }; this.resetForm("form"); }, @@ -245,20 +244,24 @@ }, // 多选框选中数据 handleSelectionChange(selection) { - this.ids = selection.map(item => item.id); + this.ids = selection.map(item => item.appId); this.single = selection.length != 1; this.multiple = !selection.length; }, /** 新增按钮操作 */ handleAdd() { - this.reset(); - this.open = true; - this.title = "添加应用"; + if(this.appList.length >= 1){ + this.$modal.msgSuccess("只能申请一次"); + }else { + this.reset(); + this.open = true; + this.title = "申请应用"; + } }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); - const id = row.id || this.ids; + const id = row.appId || this.ids; getApp(id).then(response => { this.form = response.dataApp; this.open = true; @@ -269,7 +272,7 @@ submitForm: function() { this.$refs["form"].validate(valid => { if (valid) { - if (this.form.id != undefined) { + if (this.form.appId != undefined) { editApp(this.form).then(response => { this.$modal.msgSuccess("修改成功"); this.open = false; @@ -292,8 +295,8 @@ }, /** 删除按钮操作 */ handleDelete(row) { - const id = row.id || this.ids; - this.$modal.confirm('是否确认删除用户编号为"' + id + '"的数据项?').then(function() { + const id = row.appId || this.ids; + this.$modal.confirm('是否确认删除编号为"' + id + '"的数据项?').then(function() { return delApp(id); }).then(() => { this.getList();