# FX-System
### CSDN地址
[CSDN地址](https://blog.csdn.net/qq_37771475) 里面有本人整理的Spring、Spring Boot教程,欢迎讨论交流。
#### 介绍
外汇业务管理系统(FX-System),采用微服务架构设计。功能包含银行卡开户、转账、存款、结算活期利息、外汇兑换、人民币结售汇等。
#### 数据库:MYSQL
ER图
![ER图](https://images.gitee.com/uploads/images/2019/0510/153351_6286278a_2276680.jpeg "ER图.JPG")
#### 软件架构
软件架构说明
![微服务架构图](https://images.gitee.com/uploads/images/2019/0509/172939_eafca58a_2276680.jpeg "系统架构图.JPG")
1. 总架构:采用Spring Cloud作为微服务架构技术。并将系统拆分成fx-server、fx-account、fx-bankcard、fx-auth四个微服务。
1.1 fx-server微服务
功能:使用Eureka进行服务治理,以此搭建服务注册中心集群;使用Hystrix Dashboard来实时监控Eureka Client的Hystrix各项指标信息。
技术:Eureka、Hystrix Dashboard等。
1.2 fx-account微服务
功能:基础微服务。负责对FX_ACCOUNT、FX_ROLE、FX_ACCOUNT_ROLE数据表进行CRUD操作。
所用技术概览:Lombok、Druid、JPA、Spring MVC、Thymeleaf、Feign、Hystrix、Actuator、Eureka-Client等等。
![MVC架构图](https://images.gitee.com/uploads/images/2019/0509/173402_fd7e01a3_2276680.png "屏幕截图.png")
- MVC架构:使用lombok简化POJO操作,使用Druid作为连接池,使用JPA设计数据持久层(DAO),Spring MVC设计控制层(Controlelr),Thymeleaf设计界面层(View)。
- 服务调用:使用Feign进行声明式服务调用
- 熔断措施:使用Hystrix作为熔断措施,当调用服务失败时,使用服务降级策略
- 监控:使用Actuator监控和管理Spring Boot应用,Druid监控SQL
- 服务注册与发现:使用Eureka-Client来向服务注册中心集群注册服务
1.3 fx-bankcard微服务
功能:基础微服务。负责对FX_USER_INFO、FX_BANKCARD、FX_ASSET、FX_TRANSACTION_RECORD、FX_CURRENCY、FX_CURRENCY_PAIRS数据表进行CRUD操作;引入外部API(外汇牌价信息、人民币牌价信息、新闻头条信息、校验身份证)。
所用技术概览:Actuator、JPA、Spring MVC、Eureka-Client、Hystrix、Feign、Lombok、Druid、FastJson、HttpClient等。
- MVC架构:使用lombok简化POJO操作,使用Druid作为连接池,使用JPA设计数据持久层(DAO),Spring MVC设计控制层(Controlelr),Thymeleaf设计界面层(View)。
- 服务调用:使用Feign进行声明式服务调用
- 熔断措施:使用Hystrix作为熔断措施,当调用服务失败时,使用服务降级策略
- 监控:使用Actuator监控和管理Spring Boot应用,Druid监控SQL
- 服务注册与发现:使用Eureka-Client来向服务注册中心集群注册服务
- API:使用apache的http工具类发送请求获取信息,并使用FastJson对请求到的json字符串解析成对象
1.4 fx-auth微服务
功能:外汇业务管理系统的入口,使用Zuul网关来对请求进行分发,使用JWT+Spring Security搭建SSO单点登录来进行认证及授权。
所用技术概览:Actuator、Redis、Spring Security、Spring MVC、Eureka-Client、Hystrix、Feign、Lombok、JWT、WebSocket(STOMP)、Zuul、FastJson、Thymeleaf、Mail、Jquery、Bootstrap等等
- 邮件服务:使用spring-boot-starter-mail、异步线程池来构建邮件服务
- 服务调用:使用Feign进行声明式服务调用(调用fx-account、fx-bankcard的服务)
- 监控:使用Actuator监控和管理Spring Boot应用
- 服务注册与发现:使用Eureka-Client来向服务注册中心集群注册服务
- 前端:采用Thymeleaf作为视图,Jquery、Bootstrap4进行界面渲染
- SSO单点登录:采用JWT+Spring Security+Redis搭建SSO
- 外汇牌价数据传输:采用STOMP协议,全双工方式,从服务器定时发送信息至客户端
2. SSO单点登录架构
2.1 认证流程说明
Spring Security实际上是通过一组过滤器链来对请求进行拦截操作的,如下图所示:
![Spring Security过滤器链](https://images.gitee.com/uploads/images/2019/0510/103054_0fa4bbfd_2276680.png "Spring Security过滤器链.png")
其中UsernamePasswordAuthenticationFilter和BasicAuthenticationFilter是自定义的过滤器。而FilterSecurityInterceptor会对之前自定义的过滤器进行相应判断,并抛出异常(例如身份认证没有通过)。然后由ExceptionTranslationFilter捕获抛出来的异常,进行相应处理。
2.2 用户登录认证流程
![用户登录认证流程](https://images.gitee.com/uploads/images/2019/0510/104301_414d2160_2276680.png "用户登录认证流程.png")
本系统通过setFilterProcessesUrl("/login/auth")设置该过滤器访问地址,然后客户端登录界面先提交数据到后端进行数据校验(Spring Validation),校验无误后再提交登录信息到本过滤器。
UsernamePasswordAuthenticationFilter接着获取客户的Username和Password将其封装成UsernamePasswordAuthenticationToken对象(Authentication的一个实现类),这个对象中封装了我们需要认证的信息。之后通过调用AuthenticationManager的authenticate方法进行认证。然而实际上认证并不是由AuthenticationManager做的,而是由AuthenticationProvider去实现的,AuthenticationManager的作用是管理一组AuthenticationProvider集合,通过for循环遍历的方式去寻找合适的Provider。这里AuthenticationManager调用DaoAuthenticationProvider去认证。
![ DaoAuthenticationProvider的类图](https://images.gitee.com/uploads/images/2019/0510/112829_742d47d7_2276680.jpeg "DaoAuthenticationProvider的类图.jpg")
DaoAuthenticationProvider通过调用UserDetailsService的loadUserByUsername方法来获取UserDetails对象。然后比对UserDetails的密码与认证请求的密码是否一致,一致则表示认证通过。在认证成功以后会使用加载的UserDetails(包含用户权限等信息)来封装要返回的Authentication对象,并保存在SecurityContextHolder所持有的SecurityContext中,供后续的程序进行调用,如访问权限的鉴定等。然后此Authentication会沿着调用线返回给UsernamePasswordAuthenticationFilter。
最后就是认证结果的处理部分了。本系统是通过实现UsernamePasswordAuthenticationFilter的successfulAuthentication和unsuccessfulAuthentication方法(也可使用Handler)来对认证结果进行操作。successfulAuthentication方法当认证成功时会调用,这里采用JWT将认证信息封装成Token,存入Redis,并将此Token返回给客户端存入Cookie。而unsuccessfulAuthentication方法是在认证失败时调用,这里将请求forward到Error界面,并对错误结果进行渲染。
3. STOMP over Websocket实现B/S全双工通信
![OSI七层模型](https://images.gitee.com/uploads/images/2019/0516/153157_65f4091a_2276680.png "屏幕截图.png")
![作用](https://images.gitee.com/uploads/images/2019/0516/153223_7f017d3e_2276680.png "屏幕截图.png")
3.1 Http协议:HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是一个应用层协议,由请求(request)和响应(response)构成,是一个标准的客户端服务器模型。特点:单工、无状态、一个request一个response。
3.2 WebSocket协议:WebSocket是一种在单个TCP连接上进行全双工通信的协议。
3.3 STOMP协议:STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。
3.4 实现B/S通信的方式
- Ajax轮询:客户端定时向服�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip外汇业务管理系统(本人的毕业设计~).zip
资源推荐
资源详情
资源评论
收起资源包目录
外汇业务管理系统(本人的毕业设计~).zip (591个子文件)
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
bootstrap.css 188KB
bootstrap.min.css 152KB
bootstrap-magic.css 122KB
stylesheet.css 13KB
stylesheet.css 13KB
stylesheet.css 13KB
login.css 3KB
index.css 2KB
register.css 1KB
20150600倪明辉_叶文珺_毕业论文.doc 7.1MB
.gitignore 303B
.gitignore 278B
.gitignore 277B
.gitignore 277B
.gitignore 277B
RedisUtils.html 165KB
FxTransactionRecordRepository.html 91KB
HttpStatusEnum.html 83KB
index-5.html 82KB
FxBankCardServiceImpl.html 54KB
StatusCodeEnum.html 48KB
CurrencyPairsEnum.html 44KB
FxCurrencyServiceImpl.html 44KB
IBankCardService.html 41KB
IFxBankCardService.html 37KB
FxBankCardController.html 35KB
TransactionServiceImpl.html 34KB
CurrencyEnum.html 34KB
CurrencyEnum.html 33KB
FxTransactionRecordServiceImpl.html 33KB
index-6.html 32KB
HttpUtils.html 32KB
DepositController.html 32KB
ApiController.html 31KB
IFxCurrencyService.html 30KB
overview-tree.html 30KB
overview-tree.html 29KB
HeadlinesApi.html 29KB
HeadlinesTypeEnum.html 29KB
serialized-form.html 28KB
FxCurrencyPairsServiceImpl.html 28KB
JwtLoginAuthFilter.html 27KB
ITransactionService.html 27KB
FxUserServiceImpl.html 26KB
index-6.html 26KB
HomeController.html 26KB
ForeignExchangeController.html 26KB
index-17.html 26KB
AccountController.html 25KB
TransactionController.html 25KB
TransactionTypeEnum.html 25KB
FxAssetServiceImpl.html 25KB
TransactionTypeEnum.html 25KB
ITransactionRecordService.html 24KB
FeignClientConfig.html 24KB
ITransactionService.html 24KB
IFxTransactionRecordService.html 24KB
FxBankCardRepository.html 24KB
FxTransactionRecordController.html 24KB
FxAccountServiceImpl.html 23KB
ICurrencyService.html 23KB
JwtAuthUser.html 23KB
index-7.html 23KB
JwtTokenUtils.html 22KB
FxCurrencyController.html 22KB
IAccountService.html 21KB
index-3.html 21KB
serialized-form.html 21KB
index-9.html 21KB
index-22.html 21KB
index-3.html 20KB
FxAssetRepository.html 20KB
IApiService.html 20KB
IFxCurrencyPairsService.html 20KB
JwtPreAuthFilter.html 19KB
FxUserController.html 19KB
IFxUserService.html 19KB
index-18.html 19KB
SecurityConfig.html 19KB
FxAssetController.html 19KB
index-4.html 18KB
IAssetService.html 18KB
FxUserRepository.html 18KB
IUserInfoService.html 18KB
AdminController.html 18KB
index-16.html 18KB
LoginController.html 18KB
MailServiceImpl.html 18KB
FxCurrencyPairsController.html 18KB
IFxAssetService.html 18KB
FxCurrencyPairsRepository.html 17KB
ICurrencyPairsService.html 17KB
TransactionServiceImplTest.html 17KB
CookieUtils.html 17KB
ResultVo.html 17KB
FxCurrencyRepository.html 17KB
共 591 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
马coder
- 粉丝: 1249
- 资源: 6593
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功