`
suichangkele
  • 浏览: 198088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
这个类和之前的AbstractShiroFilter是平级的,都是OnecPerRequestFilter的子类,我们从他的名字Advice中就能联想到他的用意——AOP,在spring中有很多的advice,也就是通知,比如前置通知,后置通知,最终通知等,这个类允许通过很多方法实现filter中的aop的特点,比如preHandle(前置通知),postHandle(后置通知,但是在抛异常的情况下可能不执行,),afterCompletion(最终通知,一定会执行)。   先看看他的doFilterInternal方法: public void doFilterInternal(Se ...
这个类也是AdviceFilter的实现类,我们先看看他的preHandle方法 protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { if (this.appliedPaths == null || this.appliedPaths.isEmpty()) { if (log.isTraceEnabled()) { log.trace("appliedPaths ...
不知道你们怎么想的,反正我刚上来是没看出这个类有什么用,匿名的filter也就是不用添加拦截的路径的filter还用写吗,不把这个路径配置在shiroFilterFactoryBean中不就完了吗,而且他的onPreHandle里面直接返回的true,没有任何的判断操作,直到我看了他的javadoc才明白了作者的用意——实现更广范围中的过滤。 Javadoc中的意思是这样的:假设我们有这样的需求,所有的/user开头的路径都必须登录,那么我就可以这样配置 /user/**=authc,即对于用户的所有操作必须登录校验,但是对于用户的登录页面/user/login是个例外,这个时候就可以使用 ...
这个类很简单,用于在退出登录时将以前登录的用户注销掉,并且重定向到配置的页面,默认的是”/”,可以改变redirectUrl这个属性,使其跳转到我们指定的页面。   看看他的preHandle方法 @Override protectedboolean preHandle(ServletRequest request, ServletResponse response) throws Exception { Subject subject = getSubject(request, response); String redirectUrl ...
这个类的javadoc中说明了这个类才是限制应用中的资源能否被访问的filter,我们先看的onPreHandle方法: publicboolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { return isAccessAllowed(request, response, mappedValue) || onAccessDenied(request, response, mappedValue); }   可以发现 ...
这个类的javadoc的解释说:这个filter是的判断条件是当前用户必须登录或者是通过之前的登录时的remember me可以获得principalCollection,也就是必须知道用户是谁才可以。否则返回false,即不能通过这个filter。 源码如下:   protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { if (isLoginRequest(request, response)) { ...
AuthenticationFilter是个抽象类,需要当前用户必须登录。我们看一下他的isAccessAllowed方法: protectedboolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { Subject subject = getSubject(request, response); returnsubject.isAuthenticated();//判断是否登录。 }     里面有个success ...
PassThruAuthenticationFilter这个类是一个最终的实现类,他实现了onAccessDenied方法,实现很简单 protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { if (isLoginRequest(request, response)) { return true; } else { saveRequestAndRedirectToLogin(request ...
这个抽象类也是继承自AccessControlFilter。他是用于处理登陆后的权限检查   他有一个属性unauthorizedUrl,表示如果没有对应的权限的话应该调到哪个页面。,这个可以不用配置,但是如果不配置的话默认为空,就会返回一个浏览器默认的401的页面。 看他的子类: ·HostFilter ·PermissionAuthorizationFilter ·PortFilter ·RolesAuthorizationFilter   第一个HostFilter和第三个ProtFilter在生产中不会用到,没有看。
这个是根据角色来判断某个操作能否进行,在配置ShiroFilterFactoryBean的时候每个filter后面的[role1,role2]被当做是角色来处理。   @SuppressWarnings({"unchecked"}) public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException { Subject subject = getSubject(request, resp ...
这个接口是用来实现rememberme的功能的。他的实现类为AbstractRememberMeManager,是一个抽象类,最终的继承类为cookieRememberMeManager,即将信息发送到cookie中。 先看一下defaultWebSecurityManager的构造方法:   public DefaultWebSecurityManager() { super(); ((DefaultSubjectDAO) this.subjectDAO).setSessionStorageEvaluator(new DefaultWebSessi ...
上一节说的是基于角色的权限验证,这一节介绍基于权限的角色验证类——PermissionAuthorizationFilter 这个类和前面的基于角色的判定一样,不过使用的权限而已,在配置shiroFilterFactoryBean的时候每一个filter后面的[permission1,permission2]表示的是权限,而且是或的关系,只要一个满足即可。 public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOExcepti ...
这个类不是一个工具类,但是我们在使用的时候就是将其作为一个工具类使用的,所以将其放在这里。我们看一下的javadoc就知道了. Javadoc的翻译:这个类对所有的subject执行安全相关的操作,这个接口只是为了方便而存在的,他继承了Authenticator,authorizer,SessionManager,所以将所有的操作聚集在这个类中,通过引用其他的类来完成比如校验,授权,session管理的操做。对于大多数用户来说,这简化了配置,而且相对于指向Authenticator Authorizer  SessionManager来说,更加的方便。 除此之外这个类还能进行有关用户产生 ...
这个类更简单,只是提供当前线程的subject和应用中唯一的securityUtils。源码如下: public static Subject getSubject() { Subject subject = ThreadContext.getSubject(); if (subject == null) { subject = (new Subject.Builder()).buildSubject(); ThreadContext.bind(subject); } ...
这个类提供的很多方法对于我们的平时开发都很有帮助,并不仅仅是shiro内部的应用。 <!--[if !supportLists]-->1、 1、 <!--[endif]-->getPathWithinApplication(HttpServletRequest),取得不包含应用路径的路径。 <!--[if !supportLists]-->2、  2、normalize(String path)将路径修改之后正常显示,去掉或者是替换比如”/”“/.”“/../”“\\”等。 <!--[if !supportLists]-->3、  3、& ...
Global site tag (gtag.js) - Google Analytics