V4大版本总结 new project+Gitee+Spring security + sso(普通版本)

146 阅读3分钟

V4 --->大版本总结

创建一个新的工程步骤

01 创建一个新的空工程

02 配置jdk

03 compiler ---> Build project automatic以及下面两个打钩

04 配置maven 如果不想每次都弄, 去设置里file-->new file settings-

-->settings for new project

maven本地仓库不想每次都创建, 先创建一个文件夹(系统中,别有中文) 修改settings.xml

[现在使用的版本是maven3.6.3]

Git操作

Gitee插件的安装 

直接分享到本地仓库,步骤如之前文章所示

将以下配置放入git的全局配置文件中

将如下内容拷贝到.git/info目录下的exclude文件中

(这个文件是一个git全局配置文件,用于配置哪些资源不存储到本库,默认隐藏)

=========================================>>>>>>

HELP.md
target/
out/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
.gitignore

### maven ###
mvnw
*.cmd
.mvn/

=========================================>>>>>>>>>

其他bug 请看 V4 2104

内容略了~~~

//  ==========  安全框架 ============

主流的有两种SpringSecurity,Shiro(不会)

点击文章跳转学习Shiro:-------->>> V4-- Apache Shiro 安全框架 <<<----------

Spring Security(会)

1. 安全框架底层构建了大量的过滤器

2. spring-boot-starter-security依赖springboot的

3. 最开始控制台会输出一个令牌(登录密码) 访问设置的8080端口会看到登录页面

注意: 登录页面时需要在resource/static包下创建index.html文件 没有自己创建

通过配置文件在yml进行配置密码 '{bcrypt}'指定了密码加密时使用的算法

缺点: 用户信息变更困难

自定义登录逻辑

@Configuration注解

由@Configuration注解描述的类为spring中的配置类,配置类会在spring

工程启动时优先加载,在配置类中通常会对第三方资源进行初始配置

定义一个security的配置类,然后实现userDetailsService

交给bean处理 bcrypt----> @Autowired

最后会变化为auth认证处理器sso中的重要一环 用来创建并解析令牌

系统会话状态分析和实践 

cookie和session

有状态的会话实现缺点: 

        在分布式架构中可能会存在很多问题,例如浏览器默认不支持携带其它域的Cookie信息进行资源访问,同时服务端的Session默认不能共享。

        当然我们有一种方式可以将session持久化到到一些数据库,例如Redis,下次请求到其它服务器(例如tomcat)时,可以直接从redis中获取登录信息,但是假如并发比较大,数据库的访问压力就会剧增,压力太大有可能会导致系统宕机。

        所以现在还有一种方案就是将用户的登录状态信息都存储在客户端,服务端不记录任何状态,服务端只负责对客户端传递过来的状态信息进行解析,基于此方式进行用户登录状态的判断,这样的会话过程称之为无状态会话.

--------------------------------------------------------------

            jwt技术分析和实践

 1. jwt背景

    session 传统的有状态服务应用中, 服务器需要每次都记录会话的客户端信息,

    从而识别客户端身份(Tomcat中的session) 用户登录后需要将信息存到session中

    给客户一个cookie 记录当前的session  客户再次请求 携带cookie(浏览器自动)

    但是 分布式系统中,服务端不适合保存用户状态, 所以jwt(无状态传输最好)

2. jwt 全称: json web token  json格式作为web应用请求中的令牌

    jwt跨域身份验证, 方便在分布式系统中实现身份认证

    base64URL算法转换字符串

   三部分组成 Header(头部),PayLoad(负载),Signature(签名)

    ***.***.***

    01 头部 json对象 描述jwt元数据

    02 负载 用来存放实际需要传递的数据, 官方规定七个字段(可以自定义)

    其中 sub(主题),exp(过期时间),nbf(生效时间),issur(签发人)

    这块不是加密的, 不要把密码信x

    03  signature部分

    Signature是前两部分的签名,其目的是防止数据被篡改

    指定一个秘钥给服务器(不能让用户知道) 

    然后使用header里面指定的签名算法(HMAC SHA256)

依赖jjwt