2020年5月

使用Java配置类配置SpringSecurity

终于要开始配置SpringSecurityla,鸡冻鸡冻!!

第一步、先找个漂亮的登录页面修改修改

比如我找的这个:https://down.shafish.cn/web/disanfanglogin.zip,把它解压放在你的项目中,顺便把index.html改为login.html

厚颜无耻
厚颜无耻+

  1. 配置login.html form标签内容

    // 加上action和method
    <form class="login100-form validate-form" action="/doLogin" method="post">
    ...
    </form>
  2. 修改用户名和密码的input.name属性值为username password

    // username和password
    <input class="input100" type="text" name="username" placeholder="请输入用户名" autocomplete="off">
    <input class="input100" type="password" name="password" placeholder="请输入密码">
  3. 登录按钮加上提交type

    // submit
    <button class="login100-form-btn" type="submit">登 录</button>

    OK

- 阅读剩余部分 -

先跑一个简单的demo,初步认识SpringSecurity

第一步、新建SpringBoot工程(伪第一步)

启动项目时选择导入springwebspringsecurity这两个依赖,在项目启动成功后,SpringSecurity因为SpringBoot的自动配置,已经为项目的所有接口都提供了访问保护。

第二步、写个controller接口测试url是否被保护

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }
}

第三步、启动项目,测试接口

  1. 启动项目时,可以看到控制台输出了默认的登录密码,其实就是一串uuid
  2. 浏览器访问测试接口http://localhost:8080/hello
    你可以明确地看到url自动跳转到了http://localhost:8080/login并提示输入账号密码。
  3. 输入账号:user
  4. 密码:控制台输出的uuid


    就可以正常显示接口的返回值 -> hello

- 阅读剩余部分 -

一、SpringSecurity是什么、可以做什么

SpringSecurity是一个可以提供认证、授权的服务框架,是Spring家族的一员,为Spring框架提供了给力的安全支持。

那问题来了,什么是认证,又什么是授权。
  • 简单来讲认证就是检查你的登录信息,比如说使用 用户名+密码 登录一个系统,如果账号密码匹配成功,就可以理解为认证成功;
  • 授权就规定了这个登录系统的用户可以做些什么事情。比如说小于在百度帖吧注册了个号,想把那个sb楼主写的垃圾文章删掉,这如果真能删掉,那现在的百度贴吧不是没落而是应该直接被人道毁灭了。这就是授权,什么人能做什么事,什么人不能做什么事。

在SpringBoot出现之前,大部分开发者使用的安全框架应该是ApacheShrio。没有SpringBoot自动配置的SpringSecurity,学习成本相对高点,配置也相对复杂,属于重量级的安全框架,让很多伪开发者望而却步,而SpringBoot出现后,上面那些问题得到了一定程度的缓解,所以SpringSecurity就跟着火了起来。(有多火?入夏了,能不火吗,而且还很热)

为什么说SpringSecurity是重量级的安全框架,因为她对认证授权安全等方面提供了巴适的支持。比如说Oauth2、单点登录、匿名登录、对特定接口授权、对特定对象授权、抵御XSS/CSRF攻击等等。总有那么几点合你心水。

等等,你是不是漏了什么东西,为什么是为Spring框架提供支持呢?emmmm,你一个做Java开发的,能不用Spring吗??

    一眼之前写的东西,施事不懂装懂,很多都是为了水而水,已经删掉回炉,认值重造。以后的技术文章都尽量控制文字在一千字内,不要再水文了,也不要再肤浅地用膝盖复制粘贴了,虽然说人类总是在犯同样的错误,但毕竟连接人类的不是卡拉,一个人总得在某方面投入精力,投入时间,知道点什么,学会点什么。

    之前看到一篇文章,是关于知识寄养的,大概内容是:遇到一个问题,你只会上网搜别人的文章来解决,这个答案可能是二手的、可能是三手的,但经常遇到的是经过几十手的复制粘贴,你解决问题的方式永远都需要寄生在第一个吃西红柿的人身上。没有脸红,有点迷茫,是没有多余的精力吗,还是单纯的懒,抑或单纯的脑子不灵活,我感觉我是后面两者。

    flag已立,只要学不死、就往死里学

一、文档/博客

Google的工程实践文档

csapp作者讲课视频《深入了解计算机系统

MySQL 优化实施方案

mysql的优化器执行过程

mysql之优化器、执行计划、简单优化

使用ffmpeg转码m3u8并播放

技术博客-FeelTouch

二、命令

1.代理启动谷歌浏览器

google-chrome-stable --proxy-server="socks5:127.0.0.1:1080"

2.目录忽略移动

当前目录下有a、b、c、d四个文件,在当前目录下新建new目录,并且将a、b、c三个文件移动到new中
find -maxdepth 1 \! -name d \! -name . -exec mv {} new \;

3.端口占用

window端口占用解决

  • 获取端口占用进程的pid:netstat -aon|findstr "8087"
  • 根据pid杀进程:taskkill /f /pid 24336

    linux端口占用解决

  • 查看8080这个端口是否被使用:netstat -lnt | grep 8080
  • 根据端口查看进程信息:lsof -i : 8080

    4.查看目录内容大小

    sudo du --max-depth=1 -h /var/lib/docker/

    5.杀进程

    killall 进程名
    pkill 进程名
    sudo kill -9 $(ps -ef|grep 软件名|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
    sudo kill -9 $(pidof 软件名)

    6.添加字体

    down font:https://developer.harmonyos.com/cn/docs/design/des-guides/font-0000001157868583
    解压添加到/usr/share/fonts/TTF目录中
    刷新字体:fc-cache -fv

    How to get rid of - package "num not fully installed or removed"

    dpkg --purge [package name here]

三、工具

  • markdown表格处理:https://tableconvert.com/
  • Gravatar头像 镜像地址:七牛云 ref
  • 删除git本地缓存:git rm -r --cached .
  • 删除系统无用包:sudo pacman -R $(pacman -Qdtq)
  • 清除已下载的安装包:sudo pacman -Scc