首页 > 其他分享 >伪单点登录

伪单点登录

时间:2024-04-06 10:56:13浏览次数:31  
标签:单点 登录 loit singleSignBody token import com

伪单点登录

记录下昌平网格系统集成我们用若依框架写的统计系统的思路

无非就是在前端从他们页面往我们的页面跳转,大概步骤:

  • 1.用户先通过账号密码登录网格系统,然后返回个token名叫heToken返回给前端,前端在浏览器缓存cookie里保存该token
  • 2.前端访问我们的页面,先判断cookie里面有没有我们系统返回的token名叫weToken,如果有就直接访问我们系统页面(说明不是第一次访问了),没有的话则继续以下步骤
  • 3.前端先从浏览器cookie里面获取到网格系统的token名叫heToken,并从里面获取到username
  • 4.然后我们后台会提供一个免密登录的接口(默认放行),里面主要功能就是根据用户的username从数据库获取账户信息,然后生成token(weToken)返回给前端。当人里面为了安全做了各种加解密操作,在这就赘述了。代码如下:
  • 5.前端用步骤3中获取到的username去访问步骤4中的后台接口,并返回weToken存到浏览器缓存cookie中,然后就可以正常访问我们系统的页面了。
  • 6.往后访问只需重步骤2即可。
  • 7.步骤四那个后台接口的核心代码:

SingleSignBody

package com.loit.system.domain;

import com.loit.common.core.domain.BaseEntity;
import lombok.Data;

@Data
public class SingleSignBody  extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private String code;  //这个code其实就是username加密生产的一个暗文

    private String channel;

}

SysNoPassLoginController

package com.loit.web.controller.system;

import com.loit.common.constant.Constants;
import com.loit.common.core.domain.AjaxResult;
import com.loit.framework.web.service.SysLoginService;
import com.loit.system.domain.SingleSignBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(tags = "免密登录验证")
public class SysNoPassLoginController {

    @Autowired
    private SysLoginService loginService;
    /**
     * 解析凭证,换取令牌
     *
     * @param singleSignBody
     * @return
     */
    @PostMapping("/single-sign-on")
    @ApiOperation("免密登录")
    public AjaxResult singleSignOn(@RequestBody SingleSignBody singleSignBody) {
        AjaxResult ajax = AjaxResult.success();
        // 生成令牌
        String token = loginService.singleSignOn(singleSignBody);
        ajax.put(Constants.TOKEN, token);
        return ajax;
    }
}

SysLoginService

	public String singleSignOn(SingleSignBody singleSignBody) {

        /*if (redisCache.getCacheObject(singleSignBody.getCode()) != null) {
            throw new ServiceException("登录凭证已失效");
        }*/

        String userid = null;
        try {
            userid = Sm2Util.getJieMiContent(singleSignBody.getCode());
        } catch (InvalidCipherTextException e) {
            throw new RuntimeException(e);
        }
        LoginUser loginUser = (LoginUser) userDetailsService.loadUserByUsername(userid);
        recordLoginInfo(loginUser.getUserId());
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(loginUser.getUsername()
                , Constants.LOGIN_SUCCESS
                , MessageUtils.message("user.login.success")
                , LOGIN_BY_SINGLE_SIGN_ON
                , singleSignBody.getChannel()));

        //redisCache.setLock(singleSignBody.getCode(), "lock", 7 * 24 * 3600L);

        return tokenService.createToken(loginUser);  //这个方法就是若以框架本来生产token的代码

    }

标签:单点,登录,loit,singleSignBody,token,import,com
From: https://www.cnblogs.com/lfh-blog/p/18117214

相关文章

  • 在CentOS 7中配置登录为字符登录模式
    在CentOS7中配置登录为字符登录模式,可以通过修改系统服务的默认目标来实现。字符登录模式通常对应于多用户模式(multi-usermode),在这种模式下,系统不提供图形界面,而是直接进入命令行界面。以下是配置CentOS7为字符登录模式的步骤:查看当前默认目标:首先,你需要查看当前的默认登录界......
  • 如何做到服务器之间的免密登录
    1.当A服务器访问B时,A服务器需要生成公钥和私钥2.A服务器把自己的公钥发送给B服务器,B服务器接收并加入白名单3.以后如果B服务器发送信息到A时,信息是根据公钥加密发送,保证了安全性,A服务器会接收到信息,根据私钥解密获取解密后的信息。 每次启动或者关闭hadoop会频繁输入密码,操作......
  • 黑马点评part1 -- 短信登录
    目录 1.导入项目: 2.基于Session实现短信验证登录2.1原理 : 2.2发送短信验证码: 2.3短信验证码登录和验证功能:2.4登录验证功能2 .5隐藏用户敏感信息2.6session共享问题2.7Redis代替session2.8基于Redis实现短信登录UserSer......
  • 【VMware vCenter】修改vCenter Server管理后台VAMI登录用户ROOT的密码策略。
    vCenterServer作为家庭实验室环境时,可以设置一个简单且容易记住的密码,而不需要考虑那么多的安全性要求。默认情况下,vCenter的密码强度要求比较高,SSO用户还好可以修改,VAMI账户root并没有提供可以修改的地方。vCenter的SSO用户密码策略可以在vSphereClient-系统管理-SingleSign......
  • 绕过WPS Office登录:轻松解锁所有功能的操作指南
    对于广大WPSOffice用户来说,最近的版本更新带来了一项不太受欢迎的变化:必须登录账户才能完全使用软件。这项更改意味着,如果用户在首次启动软件时拒绝登录,几乎所有的顶部工具栏按钮都会变为不可用状态,显示为灰色。尽管简单的登录过程可以轻松解决这个问题,但许多用户对此感到不满......
  • 华为ENSP SSH使用RSA密钥交换进行远程登录实验
    实验拓扑:实验流程:1、AR1模拟客户端,AR2模拟远程登录服务器1、AR2开启SSH服务,配置AAA本地用户2、交换AR1和AR2的host主机密钥3、实现AR1远程登录AR2实验配置:先配置AR1和AR2的IP地址[AR1]intGigabitEthernet0/0/0[AR1-GigabitEthernet0/0/0]ipadd192.168.1.124[A......
  • [转]Docker部署Firefox容器,实现远程浏览器查看内网服务,如登录路由器配置页面等
    类似的镜像很多人都做过,找了一个start数比较多的jlesage/firefox,这个在github上有详细使用说明,我使用docker-compose.yml文件内容如下:version:'3'services:firefox:container_name:firefoximage:jlesage/firefoxports:-"5800:5800"volu......
  • ssh登录太慢了,每次都要20s
    背景大家工作时,少不了ssh登录各个服务器,我这边手里也有很多服务器,有一些登录很快就进去了,有些要卡半天才能进去。之前以为是公司网络问题,每次也就忍了,这次突然不想忍了,决定定位一下。我这边的服务器是10.80.121.46。因为这个问题是可复现的,算是个好问题,于是在本地开了wireshark,s......
  • docker里面安装mariadb,设置用户名密码,登录mariadb
    5.启动Docker服务并设置开机自启动:  ```  sudosystemctlstartdocker  sudosystemctlenabledocker  ```###步骤2:在Docker中安装Nginx1.拉取Nginx镜像:  ```  sudodockerpullnginx  ```2.运行Nginx容器:  ```  sudo......
  • jwt实现登录 和 接口实现动态权限
     [Authorize]  ====  usingMicrosoft.AspNetCore.Authorization;   登录的DTOnamespacelogin;publicclassWeatherForecast{publicDateOnlyDate{get;set;}publicintTemperatureC{get;set;}publicintTemperatureF=>32+(in......