首页 综合布线 作为程序员|作为程序员,前公司找你帮忙,还帮吗?

作为程序员|作为程序员,前公司找你帮忙,还帮吗?

作为程序员|作为程序员,前公司找你帮忙,还帮吗?,下面小编就为大家详细的介绍一下作为程序员|作为程序员,前公司找你帮忙,还帮吗?分享,大家感兴趣的话就一起来了解下吧!

作为程序员

在前言的上一章,伊伊带大家搭建了第一个春安工程。我相信我们的朋友已经学会了如何使用Spring Security来保护我们的Java Web项目。但第一种情况只是HelloWorld的一个入门级项目。使用SpringSecurity的具体细节还有很多我们不知道的。接下来易哥就从认证方法入手,和大家一起学习如何进行各种认证。

1.Spring Security 1的认证方法。编码前的认证概念,我们还是遵循老规矩。我们先来了解一下“认证”的概念。我们不能在甚至不知道认证意味着什么的情况下就去编码。时间长了,我们也不知道是什么意思。有什么意义?

作为程序员|作为程序员,前公司找你帮忙,还帮吗?

认证:所谓认证,就是判断一个用户是否存在于系统中,用户的身份是否合法的过程。它实际上解决了用户登录的问题。身份认证是为了保护系统中的私有数据和资源,只有合法用户才能访问系统中的资源。

2.认证方法在Spring Security中,常见的认证方法如下:

①.HTTP基本身份验证;

②.表单验证

③.HTTP抽象认证;

二。HTTP基本认证1。基本身份验证概述。以上三种认证方式中,一哥带朋友学习最简单的基础认证方式。让我们看看什么是基本认证。

在Spring Security 4 . x版本中,默认的登录方式是Http基本认证,会弹出一个对话框,要求用户输入用户名和密码。每次发出基本身份验证请求时,授权请求头中的“user: password”字符串将由base64编码。但是,这种身份验证方法不安全,并且不适合Web项目。但它是一些现代主流认证的基础,在Spring Security的OAuth中,内部认证的默认方式是Http基本认证。

2.基础认证核心API在了解了基础认证的概念之后,我们还可以了解到系统中涉及到的各种核心API以及它们在基础认证过程中的执行过程。在这一章中,我们可以先对这些有一个基本的了解,然后在我后面和你分析源代码的时候再详细解释这些内容。

简单的执行过程如下:

过滤器- gt;构造令牌->:AuthenticationManager->;传递给提供者处理-->:如果认证成功,后续操作或不通过将抛出异常。

3.基本认证步骤(重点)HTTP基本认证是RFC2616标准中定义的一种认证模式,以非常简单的方式与用户进行交互。HTTP基本身份验证可以分为以下四个步骤:

(1)客户端首先发起没有认证信息的请求;

②.然后服务器端返回401未授权响应消息,并在WWW-Authentication的头中说明认证形式:进行HTTP基本认证时,WWW-Authentication会设置为Basic realm = " protected page

③接下来,客户端会收到这条401未授权响应消息,会弹出一个对话框,要求输入用户名和密码。当用户输入时,客户端将用户名和密码用冒号拼接并用base64编码,然后放在请求的授权头中发送给服务器;

(4)最后,服务器对客户端发送的信息进行解码,得到用户名和密码,并验证信息是否正确,最后将响应内容返回给客户端。

对于我们来说,以上基本认证步骤要熟练掌握。如果不熟悉这个认证流程,就很难对每个环节做出分解响应。所以这一节的知识点,易哥,希望各位朋友能写下来!

4.基础认证的弊端。哥哥一直告诉学生的一句话是“世界上没有完美的技术”,所以基础认证是有一些弊端的。

HTTP基本身份验证是一种无状态身份验证方法。与表单认证相比,HTTP基本认证是一种基于HTTP级别的认证方式,无法携带会话信息,因此无法实现Remember-Me功能。另外,用户名和密码只用简单的base64编码传输一次,几乎等同于明文传输,很容易被密码窃听和重放攻击。所以在实际开发中,这种认证方式很少用于安全验证。

三。代码实现在学习了必要的理论知识之后,请跟随你的兄弟实现代码。在上一个案例的基础上,我们对项目进行了改造。具体创建过程请参考上面:SpringSecurity教程系列03-创建Spring Security项目。

1.创建SecurityConfig配置类。这里,我们首先创建一个config配置类,命名为SecurityConfig,并从WebSecurityConfigurerAdapter的父类继承。代码如下:

包com . yyg . security . config;import org . spring framework . security . config . annotation . web . builders . http security;import org . spring framework . security . config . annotation . web . configuration . enable web security;import org . spring framework . security . config . annotation . web . configuration . websecurityconfigureradapter;@ enable webs公共类SecurityConfig扩展WebSecurityConfigurerAdapter {@ Overrideprotected void configure(http security http)抛出异常{[/ H/]//1。配置基本身份验证方法http . authorized requests()//对任何请求进行身份验证。Anyrequest () 。Authenticated () 。和()[/h }}

这段代码中的httpBasic()方法是用来打开基本认证的,其实默认采用的是基本认证!

另外,在这段代码中,你可以发现我们使用Java中链式调用的风格进行编程。你知道链式编程符合哪种设计模式吗?

2.代码结构。其实核心代码只是上面的一小段。让我们来看看代码结构。可以随便创建项目名,不一定要和我的一样。

3.启动项目。然后我们启动项目,打开浏览器和调试窗口,然后访问我们的/hello界面。这时,我们可以在浏览器中看到一个登录窗口。

系统会提示我们输入用户名和密码,成功认证后,我们就可以访问我们的web界面了。

四。基础认证详解。我们已经实现了上面的基本认证,那么接下来,我们就和大家一起对上面的认证流程做一个详细的分析。

1.基本授权此时,我们可以通过查看浏览器调试窗口中的响应头来查看WWW-Authenticate身份验证信息:

WWW-Authenticate:Basic Realm = " Realm "

1.1每个响应消息的含义如下:WWW-Authenticate:表示服务器通知浏览器进行代理认证。
  • 基本:指示身份验证类型是基本身份验证。
  • Realm="Realm ":表示验证的域名是realm domain。
  • 1.2 Realm Realm = " Realm "的概念:表示认证域名为Realm,HttpBasic的默认域名为Realm。当未经身份验证的用户请求不同的接口时,后台会根据分配给该接口的域响应不同的域名,并使用不同的用户名/密码进行身份验证。所以每次用户请求新的领域url时,都会弹出一个框要求使用新领域的用户名/密码进行认证,就像不同的角色登录时只能请求属于那个角色的url一样。

    2.此时基本认证过程的响应代码是401。请想一想会导致401状态代码的情况?可以在文章下方发表自己的看法!如下图所示:

    专心,专心,专心!我们想知道基础认证里面是怎么实现的,请往下读!

    根据401及以上响应头信息,浏览器会弹出一个对话框,要求输入用户名/密码。基本认证会将其拼接成中间带冒号的“用户名:密码”格式,编码成加密字符串xxx用base64然后,将授权:基本xxx信息附加到请求头,发送到后台认证;后台需要用base64解码xxx,得到用户名和密码,然后验证用户名:密码信息。

    如果认证错误,浏览器会保留弹出框;

    如果身份验证成功,浏览器将缓存有效的base64代码,在后续请求中,浏览器将在请求头中添加有效代码。

    以上是HTTP基本认证的内部实现流程,是重要的一环。希望你能写下来!

    3.认证成功后,基本认证会在浏览器中缓存授权认证信息一段时间,之后每次请求界面时都会自动带走,所以认证信息直到用户关闭浏览器才会被销毁,也就是说我们无法有效的注销服务器。

    但在请求注销时,前端也可以在请求头中手动配置一个错误的授权,或者在浏览器命令行执行document . execucommand(" ClearAuthenticationCache ")方法来清除空认证信息,但这种方法对Chrome浏览器无效。在调试基本认证时,我们可以直接开启无痕模式,避免缓存带来的诸多问题。

    到目前为止,我们已经通过简单的几行代码实现了基本的认证,并且知道如何取消认证。你可以自己试试看是不是这样。关于这篇文章你有什么想说的?请在评论区给易哥留言。

    以上的相关游戏回复就是作为程序员这方面的内容介绍,字数约4153字,也希望大家能够和我在一起进行分享。安防网往后会继续推荐作为程序员相关内容。

    热门文章