ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、简单示例 完成导入之后,继续运行之前未导入SpringSecurity的实例,显示如下: ![](https://img.kancloud.cn/47/3b/473bcf8f534e259a14992378c7c11232_1357x686.png) 系统被引导到了一个验证账号密码的页面,而不再是之前的接口返回值页面了;输入账号密码(Spring Security提供了一个默认的用户,用户名是user,而密码则是启动项目的时候自动生成的。我们查看项目启动的日志,会发现如下的一段Log:Using generated security password: 781c9f62-96d8-41f0-9592-3bd6410a7952,这里就是默认的密码); ![](../images/screenshot_1579140466946.png) 上述登录框是SpringSecurity是框架自己提供的,被称为httpBasicLogin。它仅仅是一个功能示意,不是产品级的。我们一般是通过表单提交的方式进行用户登录验证的,这就需要自定义自己的认证逻辑了。 具体内容,参考后续的章节; ## 二、登陆逻辑 当用户输入用户名和密码点击Login以后,SpringSecurity先通过调用我们自定义的UserDetailsService获取到加密后密码,然后根据加密算法,再将用户输入的密码按照该算法进行加密,与密文密码比对即可获知用户凭据是否有效。 ## 三、权限控制 SpringSecurity中所谓的role概念严格意义并不能称之为“角色”。如果业务要求的权限控制比较简单,整个系统中的角色以及角色所拥有的权限是固定的,那么我们可以将SpringSecurity的role概念拿来即用。但是如果我们的权限控制是可配置,用户和角色是多对多关系、角色和权限也是多对多关系,那么我们只能讲SpringSecurity的role当做“权限”来使用。 springsecurity是通过权限表达式控制授权,springsecurity的权限表达式及说明如下: ![](https://img.kancloud.cn/71/09/7109302104138cfd4275a34a94b890c8_718x490.png)