广告
返回顶部
首页 > 资讯 > 移动开发 >Android端实现单点登录的方法详解
  • 507
分享到

Android端实现单点登录的方法详解

方法单点登录Android 2022-06-06 06:06:54 507人浏览 泡泡鱼
摘要

前言 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信

前言

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下两个:

      存储信任

      验证信任

如果一个系统做到了开头所讲的效果,也就算单点登录,下面就来看看在Android端实现单点登录的方法。

服务端

服务端需要集成Token,每次在app登录时为app分配新的token,如果在某次Http请求中app传递token不是最新的,则视为需要重新登录(或者根据自己需要后台设定token有效时间,过期视为Token失效,需要重新登录).在token失效的情况下,返回约定好的code

Android端监听

App如何知道已经在其他设备登录了呢,一般可以有三种方式

1.api请求中后台返回特定code

这种是最常见的方式,缺点是需要下次api请求才知道被踢下线,可以在网络层实体模型的基类BaseModel中处理,对code进行判断


    switch (code) {
    case 1:
      break;
    case 3://被踢下线
      //Do Something
      break;
    }

2.推送

后台推送给app,从而app得知该账户在其他设备登录了,进而执行下线操作,优点是可以及时响应

3.使用第三方的监听器

很多时候app会集成一些第三方的账户系统,例如在集成了环信的app中,每个用户对应一个环信的imUserName,环信自身有提供连接状态的接听,通过监听环信的用户状态,从而达到监听app自身用户系统的效果


    EMClient.getInstance().addConnectionListener(this);

Android被踢下线后的操作

不管是哪种监听方式,最后的操作都是一样的,可以根据自己的需求进行对应的操作.这里提供一种常规化的下线流程.

从栈顶取到当前的前台Activity,Dialog提示用户,点击后跳转登录页


首先,任意地方获取到前台Activity


public Activity getTaskTop() {
  return Mactivities.get(mActivities.size() - 1);
}

然后在主线程弹出dialog


private void onConnectionConflict() {//被踢下线处理
  SPUtils.loGout();
  final Activity taskTop = ActivityManager.getInstance().getTaskTop();
  if (taskTop == null) return;
  new Handler(Looper.getMainLooper()).post(new Runnable() {
    @Override
    public void run() {
      MDdialogFactory.CreateMustOkDia(taskTop, "您的账号已在其他终端登录,请重新登录", new MDCallBack() {
        @Override
        public void onMdCall(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
          Intent intent = new Intent(taskTop, LoginActivity.class);
          intent.putExtra(ConstanTKEy.MUST_LOGIN_KEY, true);
          taskTop.startActivity(intent);
        }
      }).show();
    }
  });
}

这里做一些说明

由于监听到被踢下线的环境不一定在主线程,所以需要切换到主线程进行弹出Dilaog


 new Handler(Looper.getMainLooper()).post(Runnable r)

这里的dialog是强制的,取消不了(这里dialog是自定义的,用系统的也是可以的,这不是重点)


 builder.cancelable(false);
 builder.canceledOnTouchOutside(false);

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能有所帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:Android端“被挤下线”功能的单点登录实现


--结束END--

本文标题: Android端实现单点登录的方法详解

本文链接: https://www.lsjlt.com/news/23422.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android端实现单点登录的方法详解
    前言 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信...
    99+
    2022-06-06
    方法 单点登录 Android
  • PHP中实现SSO单点登录的方法
    这篇文章主要讲解了“PHP中实现SSO单点登录的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中实现SSO单点登录的方法”吧!SSO( Single Sign On ),即单点登录...
    99+
    2023-06-20
  • Android客户端实现注册、登录详解(2)
    上文中介绍了安卓客户端与服务器交互,实现注册功能,Android客户端实现注册/登录详解(一) 本文将继续介绍App与服务器的交互实现登录和自动登录的功能,上文说到请求服务器进...
    99+
    2022-06-06
    Android
  • Android客户端实现注册、登录详解(1)
    我们在开发安卓App时难免要与服务器打交道,尤其是对于用户账号信息的注册与登录更是每个Android开发人员必须掌握的技能,本文将对客户端的注册/登录功能的实现进行分析,不到之...
    99+
    2022-06-06
    Android
  • 详解Android的登录那点事
    随着互联网的高速发展,一个应用为了保护用户的隐私,通常会通过设置用户名+密码的验证方式保证用户隐私的相对安全,我知道一般网站的登录验证,通常会设置一个二维码,通过验证二维码,防...
    99+
    2022-06-06
    Android
  • Android端如何实现单点登录“被挤下线”功能
    这篇文章主要为大家展示了“Android端如何实现单点登录“被挤下线”功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android端如何实现单点登录“被挤下线”功能”这篇文章吧。单点登录(被...
    99+
    2023-05-30
    android
  • Android 实现微信登录详解
    前言  分享到微信朋友圈的功能早已经有了,但微信登录推出并不久,文档写的也并不是很清楚,这里记录分享一下。  正文  一、准备  &nb...
    99+
    2022-06-06
    Android
  • 聊聊基于Node实现单点登录(SSO)的方法
    以上就是聊聊基于Node实现单点登录(SSO)的方法的详细内容,更多请关注编程网其它相关文章!...
    99+
    2023-05-14
    SSO 单点登录 node
  • vue实现单点登录的方式汇总
    最近项目停工了,RageFrame的学习暂时告一段落,这一篇给大家分享下有关单点登录的相关知识,并提供一些demo给大家参考,希望对想了解的朋友有一些帮助。 话不多说,先上原理(借...
    99+
    2022-11-12
  • 单点登录原理及实现方式
    一、什么是单点登录 单点登录的英文名叫做:Single Sign On(简称SSO),指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。简而言之,多个系统,统一登陆。 为什么需要做单点登录系统呢?在一些互联网...
    99+
    2023-09-25
    java 分布式
  • SpringSecurityOAuth2单点登录和登出的实现
    目录1. 单点登录1.1 使用内存保存客户端和用户信息1.2 使用数据库保存客户端和用户信息1.3 单点登录流程1.3 JWT Token2. 单点登出3. 总结参考:Spring ...
    99+
    2022-11-13
  • java单点登录(SSO)的实现
    单点登录(SSO):SSO是指在多个应用系统中个,用户只需要登陆一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一用户的登陆的机制。 SSO的实...
    99+
    2022-11-12
  • NodeJS实现单点登录原理解析
    目录什么是单点登录单点登录原理NodeJS 演示三个不同的服务首次访问跳转至登录页应用A判断登录态,跳转到SSO认证服务器认证服务器判断登录态,渲染登录页校验用户信息,创建令牌从认证...
    99+
    2022-11-13
  • Selenium中免登录的实现方法option详解
    目录01. 准备工作02. 代码实现03. 用户数据获取方法04. 说在最后在selenium中有很多种可以实现网站的免登录,option就是其中的一种做法。学员在VIP自动化课程中...
    99+
    2022-12-14
    Selenium 免登录option Selenium 免登录option
  • SpringBoot实现登录拦截器的方法详解
    在项目目录下建立两个包:inter 与contsfig 在inter新建层中实现HandlerInterceptor的继承类 package com.example.gamebo...
    99+
    2022-11-13
  • Android实现验证码登录的方法
    这篇文章主要介绍了Android实现验证码登录的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。结果展示1.导包1在项目的gradle中导入maven {&nbs...
    99+
    2023-06-14
  • PHP SSO单点登录实现原理解析
    随着互联网的发展,人们在使用各种网站和应用程序的过程中常常遇到需要重新登录的问题,这不仅浪费了用户的时间,也给用户带来了不便。为了解决这个问题,SSO(Single Sign-On)单点登录技术应运而生。一、SSO单点登录的概念SSO(Si...
    99+
    2023-10-21
    PHP SSO (单点登录) 实现原理解析
  • 基于Security实现OIDC单点登录的详细流程
    目录一、说明二、OIDC核心概念三、什么是IDToken3.1.与JWT的AccessToken区别3.2.与UserInfo端点的区别四、OIDC单点登录流程五、SpringSec...
    99+
    2022-11-12
  • Spring gateway + Oauth2实现单点登录及详细配置
    场景: 按职能,鉴权系统需要划分 网关(spring gateway) + 鉴权(auth-server)。本文通过实践搭建鉴权系统。 spring gateway 首先引入pom依...
    99+
    2022-11-12
  • Android应用退出登录的实现方法
    每一个app都会有一个”退出登陆”的功能,当点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,后来用广播实...
    99+
    2022-06-06
    退出登录 方法 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作