1,导到springsecurity的pom依赖
2,将框架的filterChain放入web.xml文件中
3,配置springSecurity的配置类
-
@EnableGlobalMethodSecurity(prePostEnabled=true)
-
配置静态资源和登陆页放行
-
配置登陆页面和登陆成功页
-
配置自己实现的userServiceDetails
-
UserServiceDetails实现类中查询用户的角色和权限,并进行封装为User对象,User类可以自己定义一个,为了是方便存储数据库中查询到的登陆对象的所有信息。(框架自带的User对象只能存储用户名,密码)
-
可以关闭csrf功能,方便进行测试。
-
改变提交页面的登陆提交地址,修改提交表单的username和password的value。
-
改变新增用户的密码编码器和用户修改的密码编码器
-
4,此时springSecurity的@preAuthorize的注解只能加到service层中(因为spring容器的原因)。因为在框架中我们将SpringSecurity框架加到了spring的IOC容器中,springMVC的ioc容器无法获得SpringSecurity框架的类。因为springMVC的容器包含了spring容器,springMVC可以调用spring容器中的组件,反之则不能。
解决方法:只让一个容器去扫描即可。将spring的contextLoaderListener从web.xml中注释掉,然后在springMVC的dispatcherServlet中将spring的配置 加上。
5,区别对待普通请求和ajax请求。。通过请求头的xhr进行判断。