| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 快速上手Spring Security -> 正文阅读 |
|
[Java知识库]快速上手Spring Security |
写在前面我们在学习技术的过程中,学习的渠道大概有以下几种:看书,视频,博客。我们会发现,一种技术开始流行的时候,各种形式的讲述也就出现了。那么,出书,录视频,写博客的人,在他们之前,是没有什么现成的东西让他们学习的,他们是怎么上手的呢?换句话说,怎么才能有效的快速的上手一门技术呢? 这篇文章,我们一起从零开始学习Spring?Security,技术点不重要,重要的是学习方式。 说来惭愧,在写这个专栏之前,我并没有学习过Spring?Security。这也是我写博客的一次新的尝试。 目标这篇文章的目标是实现简单的登录,退出功能。展示从一无所知,到使用这个技术处理简单需求的全过程。 开始我们知道,Spring的社区支持特别完善,Spring?全家桶的文档特别好,那么我们话不多说,打开Spring Security 官网?看一下。 ?看完这个图片我们明白了,得创建一个Spring?Boot?工程,构建工具我们选择常用的maven,然后引入Spring?Security?的starter即可,当然为了测试引入Spring?Security之后访问接口的变化,我们要引入web的starter,就像是Spring?Boot?入门时候一样 不引入Spring Security?访问接口创建Spring?Boot?工程,这个太简单了,不过多赘述
把项目启动起来,之后输入localhost:8080/hello,就会看到浏览器显示hello?Security。 引入Spring Security?访问接口其实所有的安全管理框架,需要解决的就是两件事,认证和鉴权,认证是判断用户是不是当前系统的用户,不是就不让他用系统,鉴权简单理解就是,有权限访问系统的哪些部分,比如有些功能你要登录之后才能用,有些功能是内部人员可用,即根据角色分配权限,根据权限分配可用范围。
加入Spring?Security?依赖。 这个时候,如果再访问 hello?接口,就会出现一个页面,让咱们登录。 ?可是到目前为止,我们根本不知道用户名和密码,更不知道这个页面从哪来的,我们目前的项目里,没有自己写任何页面。没办法,继续看文档。 ??我们的工程是Servlet工程,看看文档是怎么写的。 ? ? ?在快速上手章节有一个?Spring Boot Auto Configuration,文档写的非常明白,主要做了三件事 ①?创建了一个?SpringSecurityFilterChain? ②?创建了一个?UserDetailsService,用户名是?user ,一个随机的密码是在控制台打印出来了。 ③?把 SpringSecurityFilterChain,注册到Web?容器里,每个请求都经过它 好了,看到第二条,我们就能登录了。?? ? ? ?文档中提到了,每次随机生成一个密码供用户登录使用,我们先来看看那个密码长什么样子:
这个密码显然不是我们想要的,总不能每次启动项目,都生成一个新的密码,而且用户名也不可能都叫做user,我们希望能自己定制用户名和密码。我们现在并不知道该怎么做。继续读文档。 我们来看看Spring?Security?给我们提供的例子:Spring Security 例子 ? ?我们看到了,Spring?Security?提供的例子,有199次提交,我们找到最开始的几次提交记录。看看它都做了什么。 找到了 ?那我们照葫芦画瓢,把中间的用户名和密码改一下,然后登录。
好了,剩下的东西我们先本着不求甚解,一步步来的原则,先看看zhangsan/123?能不能登录。 我这里直接给结论吧,不再截图,是可以登录的,并且每次都是这个用户名和密码。 退出登录我们实现了登录,退出登录怎么做呀?我们不知道引入Spring?Security之后怎么做,还是看它的例子,我们发现它并没有编写退出登录的接口,我们以前的常规操作就是,点击按钮然后把当前登录人从Session中remove掉就行了。那Spring?Security是怎么做的呢?继续看它的例子。 ? 我们虽然没有找到它处理退出逻辑的自定义接口,但是我们发现它的页面中url是/logout,那么我们直接尝试一下从浏览器输入这个url 哎呦,还真的可以,点击logout就退出了。 后记刚开始学,我们不用对自己要求太高,应该掌握一种思路,如何上手新技术,完成最最简单的功能再一步步迭代。这里留了很多坑,比如角色权限的配置,比如集成数据库,比如用户策略这些,比如我们要在退出的时候实现一些逻辑再退出,其实我自己也不会,都需要一步步去学习,我们应该掌握方法,消除对陌生技术的恐惧感。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 12:50:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |