gpt4 book ai didi

spring - 使用Spring Security插件使用文件扩展名内容协商?

转载 作者:行者123 更新时间:2023-12-02 14:13:25 24 4
gpt4 key购买 nike

我正在尝试使用最新的spring安全插件进行grails,但是遇到了一些麻烦。

我有一个使用此方法的 Controller :

@Secured(['ROLE_USER'])
def query = {
}

当我点击 http://localhost:8080/myApp/myController/query时,我会被提示进行适当的授权。但是,我需要通过文件扩展名进行内容类型协商。使用
grails.mime.file.extensions=true
我可以使用相同的UrlMappings并通过 .../myApp/myController/query.js?params=blah进入我的 Controller 方法。 但是,没有提示我进行身份验证,并且请求自动通过还是失败,具体取决于我如何设置 grails.plugins.springsecurity.rejectIfNoRule
如何在Spring Security插件中使用文件类型协商?

最佳答案

关闭grails.mime.file.extensions并添加以下过滤器:

class FileExtensionContentNegotiationFilters {
final static String DEFAULT_FORMAT = "js"
def filters = {
all(controller: '*', action: '*') {
before = {
addFormatToRequestByFileExtension(request)
}
after = {
}
afterView = {
}
}
}

protected addFormatToRequestByFileExtension(def request) {
String suffix = getSuffixFromPath(request.forwardURI)
String extension = FilenameUtils.getExtension(suffix)

if (extension.isEmpty()) {
request[GrailsApplicationAttributes.CONTENT_FORMAT] = DEFAULT_FORMAT
}
else {
request[GrailsApplicationAttributes.CONTENT_FORMAT] = extension
}
}

protected String getSuffixFromPath(String pathWithoutParams) {
int lastSlash = pathWithoutParams.lastIndexOf("/")

if (lastSlash < 0) {
return ""
}

return pathWithoutParams.substring(lastSlash + 1)
}
}

关于spring - 使用Spring Security插件使用文件扩展名内容协商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525722/

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