Shiro登录拦截校验实现与权限控制示例

下载需积分: 50 | 7Z格式 | 11KB | 更新于2025-01-01 | 78 浏览量 | 1 下载量 举报
1 收藏
资源摘要信息:"Shiro登录拦截校验demo" 知识点: 1. Shiro简介 Apache Shiro是一个开源的安全框架,用于简化身份验证、授权、加密和会话管理。Shiro可以应用在任何应用程序中,无论是简单的命令行应用程序、移动应用程序还是大型的网络应用程序。Shiro的特性包括易用性、灵活性以及透明性,它能够满足各种应用程序的安全需求。 2. Shiro的基本概念 Shiro定义了三个主要的概念:Subject、SecurityManager 和 Realm。 - Subject:表示当前与软件交互的用户,可以是人,也可以是第三方服务、守护进程账户等。 - SecurityManager:是Shiro架构的核心,它负责协调Shiro中的所有组件。 - Realm:相当于数据源,用于从数据源中获取安全相关的信息,比如用户信息、角色信息和权限信息等。 3. Shiro的认证流程 Shiro的认证流程涉及到以下几个步骤: - Subject提交用户名和密码信息。 - SecurityManager接收到认证请求后,会调用Realm的doGetAuthenticationInfo方法,从数据源获取用户信息。 -Realm将从数据源中获取的用户信息(通常是一个包含用户名、密码和角色的AuthenticationInfo对象)返回给SecurityManager。 -SecurityManager将获取的AuthenticationInfo对象和用户提交的认证信息进行比对。 -如果认证成功,SecurityManager会返回一个经过身份验证的Subject对象。 -如果认证失败,Shiro会抛出一个AuthenticationException异常。 4. Shiro的授权流程 Shiro的授权流程主要包含以下几个步骤: - Subject向系统请求访问某个资源(如访问一个URL)。 - SecurityManager会调用Realm的hasRole或者isPermitted方法,检查Subject是否有权限访问该资源。 - Realm会根据角色或权限判断Subject是否有权访问。 - 如果有权限,请求将被允许;如果没有权限,则请求将被拒绝,并抛出一个AuthorizationException异常。 5. Shiro的拦截器 Shiro提供了丰富的拦截器,用于在请求到达目标资源之前进行拦截,从而进行安全检查。拦截器包括但不限于: - anon:无需认证即可访问。 - authc:需要认证才能访问。 - user:已经认证通过或通过记住我功能登录的用户可访问。 - perms:拥有对某个资源的权限才能访问。 - role:拥有某个角色的用户才能访问。 在本demo中,很可能会用到authc拦截器来要求用户登录后才能访问特定的资源。 6. 实现Shiro登录拦截校验demo的步骤 - 配置Shiro环境,包括SecurityManager和Realm。 - 创建登录页面,用于用户提交身份信息。 - 配置Web安全过滤器,比如ShiroFilter,设置相关的拦截器规则。 - 实现自定义Realm,用于连接到真实的数据源,完成用户身份和权限信息的校验。 - 创建控制器来处理登录请求,将认证信息提交给Shiro进行校验。 - 根据Shiro的校验结果,进行相应的处理,如重定向到登录成功页面或错误页面。 7. Shiro在实际开发中的应用 在实际开发中,开发者通常需要结合Web框架(如Spring MVC、Struts2等)来集成Shiro。Shiro提供了对这些框架的广泛支持,使得开发者可以轻松地将安全认证和授权集成到应用程序中。例如,通过配置web.xml中的Filter来拦截请求,并通过配置Spring的beans来配置Shiro的各个组件。此外,开发者还可以通过实现自己的Realm来集成各种数据源,包括关系数据库、LDAP、Active Directory等。 8. Shiro的高级特性 Shiro不仅仅支持简单的Web安全,还包括如下高级特性: - 密码加密:Shiro提供了一套加密算法,可以在存储用户密码时使用。 - 缓存:为了提高性能,Shiro提供了多级别的缓存支持。 - Session管理:Shiro允许开发者对应用程序中的session进行管理,如session监听、持久化等。 - Shiro的API支持多种语言,因此可以集成到多种不同的应用程序环境中。 综上所述,本Shiro登录拦截校验demo将会演示如何在应用程序中集成Shiro框架,进行安全的登录校验和权限拦截。开发者可以参考本demo进行实践操作,更好地掌握Shiro的使用方法,并将其应用到自己的项目中。

相关推荐

filetype
web.xml配置 因为我们是与spring进行集成的,而spring的基本就是web项目的xml文件。所以我们在web.xml中配置shiros的过滤拦截。正常情况下,我们需要将shiro的filter配置在所有的filter前面,当然和encodingFilter这个filter是不区分前后的。因为两者互相不影响的。spring-shiro.xml 这里我们将来看看spring-shiro.xml的配置,这里我采取倒叙的方式讲解,我觉的倒叙更加的有助于我们理解代码。首先我们还记得在web.xml中配置的那个filter吧,名字shiroFilter,对spring-shiro.xml配置文件就是通过这个filter展开的。首先我们在web.xml配置的过滤器实际上是配置ShiroFilterFactoryBean,所以在这里需要将ShiroFilterFactoryBean定义为shiroFilter <!-- Shiro的核心安全接口,这个属性是必须的 --> <!-- 要求登录时的链接(可根据项目的URL进行替换),非必须的属性,默认会自动寻找Web工程根目录下的"/login.html"页面 --> <!-- 登录成功后要跳转的连接 --> <!-- 用户访问未对其授权的资源时,所显示的连接 --> <!-- 若想更明显的测试此属性可以修改它的值,如unauthor.jsp,然后用[玄玉]登录后访问/admin/listUser.jsp就看见浏览器会显示unauthor.jsp --> <!-- Shiro连接约束配置,即过滤链的定义 --> <!-- 此处可配合我的这篇文章来理解各个过滤连的作用http://blog.csdn.net/jadyer/article/details/12172839 --> <!-- 下面value值的第一个'/'代表的路径是相对于HttpServletRequest.getContextPath()的值来的 --> <!-- anon:它对应的过滤器里面是空的,什么都没做,这里.do和.jsp后面的*表示参数,比方说login.jsp?main这种 --> <!-- authc:该过滤器下的页面必须验证后才能访问,它是Shiro内置的一个拦截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter --> /statics/**=anon /login.html=anon /sys/schedule.html=perms[sys:schedule:save] /sys/login=anon /captcha.jpg=anon /**=authc
1751 浏览量