Shiro学习(五)-- Web集成

一、简介

Shiro与Web集成,主要是通过配置一个ShiroFilter拦截所有URL,其中ShiroFilter类似于如Struct2/SpringMvc这种web框架的前端控制器,是所有请求的入口点,负责根据配置(如ini配置文件),判断请求进入URL是否需要登录/权限等工作。
在这里插入图片描述
请求会经过ShiroFilter过滤,ShiroFilter会去加载ini文件进行认证和权限校验。如果没有相应的,那么就返回对应的提示。

其中对请求进行以特定规则拦截最重要的就是配置拦截器

二、拦截器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们通过上面的表格可以轻松的分别每一种拦截器的优先级,这样假设某个资源访问同时设置了两个或者多个拦截器,我们可以清楚的知道拦截器的执行顺序,从而方便我们进行一些操作.

更加具体的拦截器执行顺序图例:
在这里插入图片描述
如上,我们在ini文件中配置了一个[urls],在里面,我们定制了请求路径对应会应用哪些拦截器,如:

  • 当用户请求/static/开头的所有路径的时候,默认使用的就是匿名拦截器,不用做任何的拦截过滤操作就放行。
  • 当请求/employee , /department ,/orderBill的时候,首先必须要判断是否登录果过(authc登录拦截器的处理),然后再去判断是否存在某个角色(roles中的[]指定角色名字),再去判断是否对资源有某个权限(perms中的[]指定资源权限)。
  • 当请求/loginOut的时候,表示的就是注销登出,这个操作就会对应到清除用户的缓存session,然后退出之后默认会重定向(redirect)回/
  • 剩下的所有的请求/** 将会被要求必须登录authc后才可以进行访问

其中上面的[main]模块的讲解:

  1. authc.loginUrl 表达的含义是,登录认证跳转到的url
  2. roles.unauthorizedUrl用户没有包含页面请求路径所需要的角色,那么就会跳转到的页面。
  3. perms.unauthorizedUrl用户没有包含页面请求路径所需要拥有对某个资源的操作权限时,那么就会跳转到的页面。
  4. logout.redirectUrl登出之后,重定向的页面。

在这里插入图片描述

shiro所有过滤器的操作都会按照过滤规则依次的进行执行!

三、authc登录拦截器的工作原理

有两个作用

  1. 登录认证
    请求进来时,拦截判断当前用户是否登录了,如果已经登录了就放行,如果没有登录,跳转到authc.loginUrl属性配置的路径,注意:默认是/login.jsp
  2. 执行登录认证
    请求进来时,如果请求的路径为authc.loginUrl属性配置的路径(没配置,默认是/login.jsp)时如果当前用户没有登录,authc这个拦截器会尝试获取请求中的账号和密码,然后比对ini配置文件或者realm中的用户列表,如果对比正确,直接执行登录操作,否之,抛出异常,跳转到authc.loginUrl指定的路径

注意请求中的账号和密码的name必须固定为username和password,如果要改动必须额外指定。

    authc.usernameParam=xxx 
    
    authc.passwordParam=xxx

authc登录成功后的处理操作

在这里插入图片描述
authc登录失败后的处理操作
登录失败将会跳转到authc.loginUrl指定的路径,然后执行里面的方法。并将异常信息返回到指定的页面。如下:
在这里插入图片描述
其中shiroLoginFailure存放着异常的名字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值