分布式项目实现sso单点登录和购物车模块

分布式项目(dubbo框架)

41·2 m

具体介绍:

1、数据库搭建:mycat 代理服务器 采用双机热备的方式 数据库主从搭建高可用 、读写分离、数据同步
2、redis集群搭建:集群可同时实现海量数据存储和高可用,降低数据库的压力
3、生产者(后端服务器):例如:sso单点登录、购物车、订单、后台管理模块。
4、注册中心:zookeeper(一主两从)消费者通过服务注册表获取访问地址(ip+端口)去访问具体的服务提供者。
5、消费者(前端服务器):例如:web模块
6、nginx 代理服务器:反向代理、负载均衡,配合SwitchHosts使用。
7、用户发起请求

SOA面向服务思想:

在这里插入图片描述

项目结构目录:

在这里插入图片描述

RPC远程调用流程:

客户请求 → web模块的controller层 → common模块的service接口层 → sso/cart模块的XXXserviceImpl层和XXXmapper层

pom文件:继承、依赖、插件

1、实现SSO用户单点登录的流程:

1、web模块写controller层

@Controller     // 如果返回的是json 注意方法中添加该注解@ResponseBody
@RequestMapping("/user")
public class UserController {
   

    private static final String TICKET = "JT_TICKET";
    @Reference(check = false)
    private DubboUserService userService;
    @Autowired
    private JedisCluster jedisCluster;
    
	//页面通用跳转
    @RequestMapping("/{moduleName}")
    public String moduleName(@PathVariable  String moduleName){
   
        return moduleName;
    }

	//注册时用户(密码、用户名、电话)入库,
    @RequestMapping("/doRegister")
    @ResponseBody
    public SysResult doRegister(User user){
     
    //SysResult:common模块里自定义的VO对象(1、状态码 2、提示信息 3、返回给前端的值)
        //service 第三方接口. 直接rpc调用访问jt-sso中的实现类
        userService.saveUser(user);
        return SysResult.success();
    }
    
     //用户登录
     // 需求1:  将cookie名称为 "JT_TICKET"数据输出到浏览器中,要求7天超时。并且实现"jt.com"数据共享
    @RequestMapping("/doLogin")
    @ResponseBody
    public SysResult doLogin(User user, HttpServletResponse response){
         
        String ticket = userService.doLogin(user);//完成用户登录操作 之后获取ticket密钥信息
        if(StringUtils.isEmpty(ticket)){
    //如果为null,则说明用户名或密码有问题           
            return SysResult.fail();
        }               
        Cookie cookie = new Cookie("JT_TICKET",ticket); //1.创建Cookie对象
        //2.设定cookie存活的时间 value=-1  关闭会话时,cookie删除。value= 0  立即删除。value= >0 设超时时间
        cookie.setMaxAge(7*24*60*60);        
        cookie.setDomain("jt.com");//3.在jt.com的域名中实现数据共享.
        cookie.setPath("/"); //一般情况下都是/        
        response.addCookie(cookie);//4.将数据保存到浏览器中
        return SysResult.success();
    }
    
     //用户登出,删除redis和cookie,
    @RequestMapping("/logout")
    public String logout(HttpServletRequest request,HttpServletResponse response){
   
        Cookie cookie = CookieUtil.getCookieByName(request,TICKET);     
        if(cookie != null){
     
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值