gpt4 book ai didi

grails - 确定未经 Shiro Grails 插件授权的请求的 url(或 Controller 和操作名称)

转载 作者:行者123 更新时间:2023-12-02 11:40:10 24 4
gpt4 key购买 nike

我希望能够记录我的应用收到的未经授权的请求。因为 Shiro 插件使用 HTTP 重定向将用户发送到 auth/unauthorized,所以请求对象是新的,我无法获取原始 URL; Controller / Action 名称;或从中请求参数。

有没有办法确定 AuthController 未经授权的操作中的原始 url 或 Controller 和操作名称(以及请求参数,如果可能)?

我正在看http://plugins.grails.org/grails-shiro/tags/RELEASE_1_1_3/ShiroGrailsPlugin.groovy作为插件源的引用。

详细信息:
Grails 1.3.7
Shiro Grails 插件 1.1.3

最佳答案

我遇到了同样的问题...我的解决方案并不完美:

浏览器在您可以通过的 header 之一中发送所谓的引荐来源网址

request?.getHeader('Referer')

但是引用者并不是你真正可以依赖的——但大多数浏览器都会发送它。

另一个解决方案可能是过滤器:在调用 ShiroSecurityFilters.groovy 中的 accessControl() 之前,尝试将当前 url 写入另一个变量。您可以通过request.forwardURI获取当前URL。

更新:刚刚验证了我的最后一个假设 - 这对我来说似乎是最干净的解决方案:

ShiroSecurityFilters.groovy中,替换

            // Access control by convention.
accessControl()

            // Access control by convention.
if (!accessControl()) {
session.deniedUrl = request.forwardURI
return false
}

这使您能够在身份验证/未经授权的 Controller 中以 session.deniedUrl 形式访问 URL。

关于grails - 确定未经 Shiro Grails 插件授权的请求的 url(或 Controller 和操作名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com