Shiro使用知识点
这段时间老夫接手一坑,系统使用springMVC+hibernate+shiro进行搭建,以前只自己搭建玩过shiro, 所以对一些知识点了解较少,刚好在这个系统上进行弥补。
Shiro概念
Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。如下是它所具有的特点:
- 易于理解的 Java Security API;
- 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
- 对角色的简单的签权(访问控制),支持细粒度的签权;
- 支持一级缓存,以提升应用程序的性能;
- 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
- 异构客户端会话访问;
- 非常简单的加密 API;
- 不跟任何的框架或者容器捆绑,可以独立运行。
Shiro 的认证和签权可以通过 JDBC、LDAP 或者 Active Directory 来访问数据库、目录服务器或者 Active Directory 中的人员以及认证 / 签权信息。
SessionManager 通过会话 DAO 可以将会话保存在 cache 中,或者固化到数据库或文件系统中。
apache shiro能做什么?
支持认证跨一个或多个数据源(LDAP,JDBC,kerberos身份等)
执行授权,基于角色的细粒度的权限控制。
增强的缓存的支持。
支持web或者非web环境,可以在任何单点登录(SSO)或集群分布式会话中使用。
主要功能是:认证,授权,会话管理和加密。
以下提供一些过滤器仅供参考
name | 功能 | 描述 |
---|---|---|
anon | 任何用户发送的请求都能够访问 | $1600 |
authc | 经过认证的请求可访问,否则将会将请求重定向到ini 配置文件配置的authc.loginUrl 资源,进行认证操作 | authc.loginUrl=/login.jsp |
logout | 结束会话 | logout.redirectUrl=/ #结束会话后重定向到此资源 |
port | 指定请求端口 |
注册Shiro
- 方式一:使用java代码 使用java代码(在一个可以执行初始化操作的地方,比如ServletContainerInitializer的子类的onStartUp方法里,或者一个注册了loadOnStartUp的Servlet的init方法里)
@Override
public void init(ServletConfig config) throws ServletException {
ServletContext servletContext = config.getServletContext();
//设置初始化参数
servletContext.setInitParameter("shiroConfigLocation", "classPath:shiro.ini");
//注册Listener
servletContext.addListener(EnvironmentLoaderListener.class);
//注册filter
Dynamic dynamic = servletContext.addFilter("ShiroFilter", ShiroFilter.class);
dynamic.addMappingForUrlPatterns(null, false, "/*");
}
- 方式二:在web.xml中配置 ```xml