这段时间老夫接手一坑,系统使用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
shiroConfigLocationclassPath:shiro.ini org.apache.shiro.web.env.EnvironmentLoaderListener ShiroFilter com.doservlet.plugin.security.SmartSecurityFilter ShiroFilter /*

``` ⤧  Next post Git使用方式 ⤧  Previous post AnypointStudio初学