我的资源中有一个带有@RequiresGuest注释的方法。当登录用户点击链接时,它会正确地使用此消息抛出UnauthenticatedException
尝试执行仅限访客操作。目前的主题是 不是客人(他们已被认证或记住了 以前登录)。访问被拒绝。
但我该如何处理呢?例如,我如何将请求重定向到注销页面?
答案 0 :(得分:1)
这通常取决于您选择的MVC框架:
但是,如果您不希望为此使用MVC机制,则可以创建一个Servlet过滤器来执行此操作:
过滤器将在try / catch块中执行FilterChain,捕获AuthorizationException。如果它捕获一个,它会发出302重定向到'unauthorizedUrl'。
Shiro现有过滤器不这样做的原因是因为他们在调用FilterChain之前授权了Subject: 如果Subject不符合授权标准,甚至不会调用过滤器链(因此没有要捕获的AuthorizationException)。
如果您希望在Shiro中看到其他行为,请提交issue并将其作为潜在的新功能进行讨论。