分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)

这篇具有很好参考价值的文章主要介绍了分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
在项目中使用ctrl+H ,来快速查找相关的hrl请求。
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)

首先全部的请求会进过jt-web,在进行对其他系统的通信。
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
说明:当点击“登录”或者"免费注册"跳转到登录或者注册页面。
在jt-web项目中,声明UserController资源,完成页面资源的调度,具体代码实现如下所示:

@Controller
@RequestMapping("/user")
public class UserController {
/**
登陆页面:http://www.jt.com/user/login.html
注册页面:http://www.jt.com/user/register.html
*实现通用页面跳转
*/
@RequestMapping("/{moduleName}")
public String module(@PathVariable String moduleName) {
return moduleName;
}
}

创建项目sso
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)

分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
修改新创建的pom.xml文件:

<dependencies>
		<dependency>
			<groupId>com.jt</groupId>
			<artifactId>jt-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>
<build>
		<plugins>
			<!--跳过测试类打包 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

在jt-common中创建pojo对象:

@TableName("tb_user")
@Data
@Accessors(chain =true)
public class User extends BasePojo{
	@TableId(type =IdType.AUTO)
	private Long id;
	private String username;
	private String password;
	private String phone;
	private String email;
}

分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
创建数据库接口:在jt-sso项目下,创建一个数据层接口。

public interface UserMapper extends BaseMapper<User>{
}

再复制资源,将jt-manage项目中的src/main/resources目录下的所有的资源复制到jt-sso项目下的src/main/resources目录里。然后接下来,进行资源修改。
01.将mappers目录下的ItemMapper改为UserMapper
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)

02.将properties目录下的image.properties删掉,此模块不涉及图片上传的业务,因为不需要image.properties中的配置信息。
03.修改application.yml文件中的tomcat服务器端口号改成8093

server:
port: 8093
servlet:
context-path: /
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
#如果需要项目发布,则数据库地址必须配置远程数据库
url: jdbc:mysql://127.0.0.1:3306/jtdb?
serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true
&allowMultiQueries=true
username: root
password: root
#配置视图解析器
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
#mybatis-plush配置
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml
configuration:
map-underscore-to-camel-case: true
#日志记录 输出数据库的日志信息.
logging:
config: classpath:logging-config.xml
level:
com.jt.mapper: debug

04.将jt-manage中的主启动类复制一份到jt-sso中

@SpringBootApplication
@MapperScan("com.jt.mapper")
public class SpringBootRun {
public static void main(String[] args) {
SpringApplication.run(SpringBootRun.class, args);
}
}

在jt-sso中:
UserService接口:

package com.jt.service;
public interface UserService{
}

UserServiceImpl 接口实现类:

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
}

UserController:

@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getMsg")
public String test() {
return "单点登录项目搭建成功";
}
}

配置Nginx

#配置前台管理服务器
server {
listen 80;
server_name sso.jt.com;
location / {
#实现http请求的转发
proxy_pass http://localhost:8093;
}
}

以上都是搭建子系统,一个是前端的jt-web,一个是后台的jt-sso

正式写功能:
01.用户信息校验
分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
前端的相关代码:

$.ajax({
url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?r=" +
Math.random(),
dataType : "jsonp",
success : function(data) {
checkpin = data.data?"1":"0";
if (!data.data) {
validateSettings.succeed.run(option);
namestate = true;
}else {
validateSettings.error.run(option, "该用户名已占用!");
namestate = false;
}
}
});

分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)
在jt-sso后台的控制类中

/**
* 根据web中传递的参数,实现数据校验
* url:http://sso.jt.com/user/check/{param}/{type}
* 参数:param/type
* 返回值: SysResult对象
* JSONP跨域访问 需要数据的封装
*/
@RequestMapping("/check/{param}/{type}")
public JSONPObject checkUser(@PathVariable String param,
@PathVariable Integer type,
String callback) {
//查询后台数据库,检查数据是否存在.
Boolean flag = userService.checkUser(param,type);
//封装返回值结果
SysResult sysResult = SysResult.success(flag);
return new JSONPObject(callback, sysResult);
}
}

编辑jt-sso的UserService实现类文章来源地址https://www.toymoban.com/news/detail-480063.html

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMaper;
/**
* 需要根据参数,查询数据库.
* type:1 username、2 phone、3 email
* 返回值: true用户已存在,false用户不存在,
*/
@Override
public Boolean checkUser(String param, Integer type) {
//String column = type==1?"username":(type==2?"phone":"email");
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, "username");
map.put(2, "phone");
map.put(3, "email");
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.eq(map.get(type), param);
int count = userMaper.selectCount(queryWrapper);
//返回值:true用户已存在,false用户不存在
return count==0?false:true;
}
}

到了这里,关于分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .NET CORE开源 DDD微服务 支持 多租户 单点登录 多级缓存、自动任务、分布式、日志、授权和鉴权 、网关 、注册与发现 系统架构 docker部署

    源代码地址https://github.com/junkai-li/NetCoreKevin 基于NET6搭建跨平台DDD思想WebApi架构、IDS4单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权、CAP、SignalR、 docker部署  如需简约项目可直接去除项目引用 解耦设计都可以单独引用 架构默认全部引用并启动 项目启动时

    2023年04月24日
    浏览(46)
  • 高级分布式系统-第12讲 分布式控制经典理论

    高级分布式系统汇总:高级分布式系统目录汇总-CSDN博客 分布式控制系统的设计,是指在给定系统性能指标的条件下,设计出控制器的控制规律和相应的数字控制算法。 根据偏差的比例(Proportional)、积分(Integral)、微分(Derivative)进行控制(简称PID控制),一种广泛应用

    2024年01月20日
    浏览(47)
  • Python 全栈系列239 使用消息队列完成分布式任务

    在Python - 深度学习系列32 - glm2接口部署实践提到,通过部署本地化大模型来完成特定的任务。 由于大模型的部署依赖显卡,且常规量级的任务需要大量的worker支持,从成本考虑,租用算力机是比较经济的。由于任务是属于超高计算传输比的类型,且算力机随时可能出现不稳定

    2024年04月13日
    浏览(39)
  • 分布式Session登录

    Cookie是在Web服务器和Web浏览器之间传递的一小段数据,用于在浏览器和服务器之间维持会话状态。保存session(通过身份验证后服务端为用户创建一个会话标识符) 想象一下你去一家咖啡店。你点了一杯咖啡,并且收银员给你一张小纸条,上面写着你的订单号码。你拿着这张

    2024年02月08日
    浏览(39)
  • 12. Redis分布式高可用集群搭建

    主从复制,哨兵,集群(master-cluster) 1. 主从模式 2. 哨兵 3. 集群(master-cluster) 1. 关闭防火墙,三台机器都执行 2. hostname修改,三台机器都执行,这一步是为了在内网中三台服务器能相互连通 3. 免登陆,三台机器都执行 4. 安装gcc并升级 5. 下载redis,在三台机器上都执行 6.创

    2024年02月14日
    浏览(39)
  • 浪花 - 单机登录升级为分布式 Session 登录

    目录 一、单机登录思路 二、修改为分布式登录的原理和思路 1. 单机登录的局限性 2. 解决方案:共享存储 三、使用 Redis 实现分布式登录 1. 本地安装 Redis 后启动 Redis 2. 引入 Redis 依赖 3. 在 application.yml 中配置 Redis 账户和密码 4. Redis 本地可视化管理工具:Another Redis Desktop

    2024年01月21日
    浏览(60)
  • SpringBoot 分布式验证码登录方案

    为了防止验证系统被暴力破解,很多系统都增加了验证码效验,比较常见的就是图片二维码,业内比较安全的是短信验证码,当然还有一些拼图验证码,加入人工智能的二维码等等,我们今天的主题就是前后端分离的图片二维码登录方案。 传统的项目大都是基于session交互的

    2024年02月08日
    浏览(29)
  • 百度智能云分布式数据库 GaiaDB-X 与龙芯平台完成兼容认证

    近日,百度智能云的分布式关系型数据库软件 V3.0 与龙芯中科技术股份有限公司的龙芯 3C5000L/3C5000 处理器平台完成兼容性测试,功能与稳定性良好,获得了龙架构兼容互认证证书。 通用 CPU 处理器是信息产业的基础部件,是关系到国家命运的战略产业之一。国产 CPU 目前主要

    2024年02月19日
    浏览(34)
  • SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

    一、数据聚合 聚合(aggregations): 实现对文档数据的统计、分析、运算。 (一)聚合的常见种类 桶(Bucket)聚合: 用来做文档分组。 TermAggregation: 按照文档字段值分组 Date Histogram: 按照日期阶梯分组,例如一周一组,一月一组 度量(Metric)聚合: 用以计算一些值,比如

    2024年02月15日
    浏览(43)
  • 读发布!设计与部署稳定的分布式系统(第2版)笔记12_超时模式

    2.4.2.1. 电缆可能会断开 2.4.2.2. 传输线路上的交换机或路由器可能会坏掉 2.4.2.3. 正在寻址的计算机可能会崩溃 3.2.3.1. 这些库通常代表系统直接进行套接字调用 4.5.4.1. 快速重试很有可能再次失败 4.7.1.1. 失败了 4.7.1.2. 成功了 4.7.1.3. 其他提示信息

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包