在实际的开发项目中,我们都会用到角色权限的控制,每个人可能因为不同的角色而在登录时进入不同的页面,这样角色与代码紧密耦合在一起,形成硬编码,在后续维护中,我们每新增一个角色就需对代码多加个if-else的判断,这里,我们看看spring-security如何实现用户权限控制?
一、什么是spring security?
spring security基于spring框架为j2ee的企业应用软件提供全面的安全服务。(即仅应用于java开发应用中)
二、spring security
1.spring 的AOP概述
这2个切面就像2把锁,系统进入各个环节时根据2把锁同时完成,才能进入业务功能。
2.spring security作用
3.spring security源码获取
4.spring security项目配置
(1)web.xml配置
(2)spring security自身配置文件
所有的框架都有自己的配置文件,spring security也不例外,它的配置文件默认与spring相同(applicationContext.xml)
在applicationContext.xml中头文件引入2个scheme文件 spring、spring-security
a).<http auto-config="true"></http>
<http>标签代表访问的全为http协议
auto-config="true"解析:在spring security中共有7个过滤器,如果配置不好会有异常,而在2.0版本中加上此属性可以自动配置过滤器链
b).<intercept-url pattern="/index.jsp" access="ROLE_user,ROLE_admin">
<intercept-url>解析:拦截的URL,即保护路径,可以是页面也可以是action
access解析:表示当前有哪些角色可以访问当前路径,默认ROLE前缀
c).配置用户
d).自定义登录页配置
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp" default-target-url="/ace.jsp" always-user-default-target="true"/>
authentication-failure-url:认证失败返回页面
default-targeturl:登录成功页面
always-user-default-target:不管从哪个页面进来都进入均返回成功默认页面ace.jsp(强制默认成功页);如果不配置,从保护资源进入成功后依据cookie记忆返回保护资源index.jsp(人性化)。
e).login.jsp页面
f).无权限配置页面(如果用户没有权限访问,将返回denied.jsp页面)