Java教程

V4-06 单点登录下篇, 无数据库版(没完成)

本文主要是介绍V4-06 单点登录下篇, 无数据库版(没完成),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

接上: 总结逻辑(单点登录由来)

传统单体架构方式的会话是如何实现的Cookie session

传统单体架构方式的登录在分布式架构中有什么缺陷(Cookie的跨域 session的共享

分布式架构中的认证方式如何实现

1. (session数据持久化 Redis)

2. 认证服务器创建令牌, 客户端存储令牌(服务端进行解析)

认证服务器的作用:

 专门用来判断用户的合法性(创建并相应令牌,设置认证机制, 登录成功,失败,没有认证)

认证服务器基于什么规范进行创建

JWT-JSON web Token

资源服务器要做什么(解析令牌, 存储用户认证和权限信息, 提供有条件的资源访问)

Bug分析

400 参数异常401 403 

----------------------  resource 资源服务器

 

 

 

 

 

 token的制作或者解析时候出现错误

检查JwtUtils类  查看方法有无错误, 两个utils

 如果拦截器没放行 返回true  返回的就是

 ------------------------------创建公共工程(抽取共性)----------------

创建sso-common工程 

util包拉过来, 删除多余util包

common工程的三个依赖

引用common依赖

---> 在auth包中添加依赖(common依赖)

---> 在resource中添加依赖(common依赖)

<dependencies>
        <dependency>
            <groupId>com.cy.jt</groupId>
            <artifactId>sso-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

 

 

 服务端过滤器层面的跨域请求的解决办法

当访问认证和资源服务器时,假如是前后端分离项目,需要进行跨域访问

跨域配置代码如下---> 

package sso.config;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsFilterConfig {
    /**
     * 服务器服务端过滤器层面设计
     * @return
     */
    @Bean
    public FilterRegistrationBean<CorsFilter> filterFilterRegistrationBean(){
        //1.对此过滤器进行配置(跨域设置-url,method)
        UrlBasedCorsConfigurationSource configSource=new UrlBasedCorsConfigurationSource();
        CorsConfiguration config=new CorsConfiguration();
        config.addAllowedHeader("*");//所有请求头信息
        config.addAllowedMethod("*");//post,delete,get,put,....
        config.addAllowedOrigin("*");//所有请求参数
        config.setAllowCredentials(true);//所有认证信息,cookie
        //2.注册过滤器并设置其优先级  这种请求的路径全部放行
        configSource.registerCorsConfiguration("/**", config);
        FilterRegistrationBean<CorsFilter> fBean=
                new FilterRegistrationBean(new CorsFilter(configSource));
        fBean.setOrder(Ordered.HIGHEST_PRECEDENCE);//设置优先级
        return fBean;
    }

}

-------->测试:  登录 访问增查,查看权限信息

当你已经点击退出登录logout时候

removeItem直接删除token 

这篇关于V4-06 单点登录下篇, 无数据库版(没完成)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!