0
我在@RequiresGuest注解的资源中有一个方法。当登录用户点击链接它正确地抛出一个UnauthenticatedException
与此消息如何使用Shiro处理UnauthenticatedException
试图执行guest-only操作。当前主题是 不是客人(他们已经从 以前的登录身份验证或记住)。拒绝访问。
但我怎么处理呢?例如,我如何将请求重定向到注销页面?
我在@RequiresGuest注解的资源中有一个方法。当登录用户点击链接它正确地抛出一个UnauthenticatedException
与此消息如何使用Shiro处理UnauthenticatedException
试图执行guest-only操作。当前主题是 不是客人(他们已经从 以前的登录身份验证或记住)。拒绝访问。
但我怎么处理呢?例如,我如何将请求重定向到注销页面?
这通常取决于你选择的MVC框架:
但是,如果你不希望使用MVC机制对于这一点,就可以创建一个Servlet过滤器,将做到这一点:
过滤器将在try/catch块执行FilterChain ,捕获AuthorizationException。如果它捕获一个,它会发出一个302重定向到'unauthorizedUrl'。
原因四郎现有的过滤器不这样做是因为他们授权过调用FilterChain前的主题: 如果主题不符合授权条件,过滤链甚至从未调用(因此不存在AuthorizationException来捕获)。
如果你想看到四郎替代行为,请提交一份issue,并讨论了作为一个潜在的新功能。
在Shiro 1.2.1中,任何Shiro异常都被封装到泛型的ServletException中。请参阅AbstractShiroFilter.doFilterInternal。因此,在您的过滤器中捕获ShiroException将无法工作。 – 2012-11-29 11:51:55