在数据库中存储密文密码 很显然,实际开发中绝对不能使用明文密码,否则数据泄露的可能性非常大。 Spring Security针对密码推荐bcrypt算法,bcrypt算法可以一次性计算好hash后的值,自动加随机的盐,可以防止暴力破解。是一个使用广泛的算法。 密码学在计算机科学出现之前就有了,而哈希
使用数据库存储用户信息和角色 观察我们的配置类可以发现,我们目前把所有的用户名,密码和角色信息都硬编码在配置类里。角色名一旦有变动,需要修改全部代码中对应的这个角色名。这显然不够好。更常见的做法是用数据库来存储相关的内容。每次进行验证的时候,到数据库中去存取数据。 Spring Security支持
用户角色权限 对于Web开发来说,包括后边要用到的REST风格,权限就是基于用户的身份,能够访问哪些URL,因为在REST风格下URL意味做一个动作然后获得结果。 按照教程,目前我们已经在Spring Security的配置类里配置了一些角色如下: 姓名 角色 jenny ADMIN, MANAGE
用户登出 用户登出的动作是实际上是清除Session中的用户数据,开发的方法如下: 配置文件中加上登出的功能和对应的路径 在JSP页面中添加一个登出按钮 在登录表单页面中加入登出的消息 先来修改配置文件: @Override
protected void configure(HttpSecurity
由于Spring Security是另外一个项目,并不像之前我们使用的包都属于Spring Framework,一起用就行了。 Spring Security开发的过程是: 创建Spring Security的初始化器 创建Spring Security的配置文件 添加用户,密码,角色等内容 Spr
Web开发两大传统艺能,增删改查基础操作已经会写了,还剩下就是用户验证了。Spring Security就是做这个的。主要的功能就是管理用户身份认证(authenticate)和用户权限(authority)。 有两种方式可以为一个项目添加安全管理:声明式和编程式。 Spring Security是
Maven基础概念 如果用过Eclipse和Intellij或者其他的IDE,就会发现由于各个IDE的设置不同,项目的目录结构也不同。如果每个人的可以自行设置项目目录和结构,就让大规模开发变得困难。Maven就是一个标准化的项目构建工具,用不同的IDE新建各自的项目会不同,但所有的IDE都支持创建M
@AfterReturning 顾名思义,这是在方法成功执行之后的切面。所谓成功执行,就是方法返回了结果,中间没有出现任何异常。 这种切面主要用于日志,预处理数据等功能 这个技术还一个重要的方面就是需要获得返回值,以便进行一些操作,来看一个简单的例子: 在Aspect类中打开getter方法的切点,
环境配置 很多切点是用注解来标示的,为了使用AOP先来进行环境配置,先看一下要如何做。 虽然我们的库里已经有了Spring全套框架,但依然需要下载导入AspectJ的包,这是因为Spring AOP使用了一些AspectJ的注解和包。 然后我们要看@Before advice的使用,操作的步骤是:
AOP的概念 刚刚第一个增删改查应用其实还很贫弱,缺少一些常见的内容,比如: 缺少安全检查功能,一般不会允许直接进行增删改查。Web应用最基础的操作一般都需要用户身份验证,至少登录的用户才被允许做一些事情。 缺少日志功能,这是一般程序都应该有的功能。 那么就来添加安全检查和日志功能吧。且慢,要在哪里