Apache Shiro是一个Java的安全管理框架,可以用在JavaEE环境下,也可以用在JavaSE环境下。
Shiro可以完成的功能主要有登录验证、权限验证、加密、会话管理、缓存等。如图:
Shiro主要的功能模块有两部分:
(1)登录验证:不是登录用户不能访问敏感资源,只有登录了才可以访问敏感资源;
用户登录成功,就可以访问敏感资源,之后的所有访问都通过Shiro直接访问指定的资源。用户没有登录成功,跳转到指定的登录页面。
//环绕通知,控制目标方法的执行。
public Object around(ProceedJoinPoint pjp){
Object returnValue=null;
try{
if(登录过){
returnValue=pjp.proceed();
}else{
//由Shiro控制跳转到指定的页面,由spring_Shiro.xml来提供跳转的目的地。
}
}
}
**注意:**没有Shiro,项目的功能照样能跑,添加Shiro实际上是横切,把Shiro横切到项目中,实际就是代理模式。
(2)权限验证:不同的用户账号登录成功之后,用户所使用的功能不同,也就是拥有的权限不同。
一定是在登录认证完成之后,才能做Shiro的权限认证,根据用户的权限显示菜单项。
(1)spring security 功能完善,学习成本偏高;
(2)shiro 学习成本低,简单的安全框架,基本功能存在(登录认证,权限认证);
(3)spring mvc interceptor(拦截器) 只能做登录认证,不能做权限认证。