美文网首页
访问服务器总是弹出输入用户名和密码的对话框

访问服务器总是弹出输入用户名和密码的对话框

作者: 张培_ | 来源:发表于2017-09-30 22:19 被阅读227次

    情景描述

    • 访问后端服务器的时候,出现每次访问该服务器域下的任何路径都会弹出需要你输入用户名和密码的警告框
    • 由于和系统和cas集成所以我尝试输入cas可以认证的用户名发现无论如何用户名和密码都不对。
    • 所以任何资源的请求都返回401

    矛盾点

    • 对比我的代码和线上的代码对于同一个controller没有任何区别,那么为什么线上不会弹出而本地代码会弹出对话框呢?

    如果出现像这样完全没有头绪的问题该从哪里开始着手呢?

    • 首先既然访问任何服务器域下的资源都会出现弹框,那么就不需要考虑可能是哪一个controller出现了问题,就可以从整个服务器的application开始

    • 那么可以发现整个服务器只有启动过程是正常的,那么我们只好观察启动过程打印出的log

    • 对比正常服务器打印出的log和我的服务器打印出来的log发现了不同。

       b.a.s.AuthenticationManagerConfiguration : 
      
       Using default security password: a63ce2a3-bb79-4762-94e7-513f9bf7418c
      
    • 因此我们发现了我们多了AuthenticationManagerConfiguration

      get技能

      • 如果出现了完全没有头绪的问题唯一的救命稻草一定是log信息,任何问题都要从err或者log信息开始着手。
      • 对比也是一个很好的方式,这种针对于以前work现在自己做不能work的情况。对比以前和现在有什么区别,也是可以解决问题的方式。

    AuthenticationManagerConfiguration是什么有什么作用为什么application会运行这个类?

    • 经过查找发现AuthenticationManagerConfiguration是spring securit框架中的配置类。
    • 然后查找gradle发现我在项目中引入了spring security
    • 去除之后没有出现任何问题。

    虽然我引入了spring security但是并没有设置任何东西,怎么会要验证?

    • spring boot会在启动的时候默认的创建应用上下文,也就是将app需要的bean全部创建好
    • 因为gradle中存在spring security这个依赖,因此spring boot默认的为其config和FilterChinal创建bean
    • 配置中默认的设置是对所有的请求的url都做验证,因此都会出现弹框。

    那么用户名和密码到底是什么从哪里来?

    • 首先密码我们是知道的就是运行的时候打印出来的
    • 用戶名经过搜索发现SecurityProperties里面的一个内部静态类User类里面,管理了默认的认证的用户名与密码。默认用户名是“user”
    • 经过输入用户认证通过。

    反思

    • 项目上用了spring security,对于现在应该疯狂汲取知识的阶段我应该用我所有空余时间去把项目上用到的所有技术全部研究一下至少明白原理。到现在却对他了解不多实在太不应该。

    ACTION

    • 每天自己的时间应该分成两部分,反思回顾和学习探究,每当有自己的时间之后,先做时间安排分成两大部分,然后安排好自己反思的今天遇到问题的时间和学习新技术的时间。每天必须把两部分都做到

    相关文章

      网友评论

          本文标题:访问服务器总是弹出输入用户名和密码的对话框

          本文链接:https://www.haomeiwen.com/subject/aclwextx.html