使用 Spring Security 时如何允许 CKEditor 在 Grails 中上传图像
Posted
技术标签:
【中文标题】使用 Spring Security 时如何允许 CKEditor 在 Grails 中上传图像【英文标题】:How to Allow CKEditor upload images in Grails when using Spring Security 【发布时间】:2015-08-08 20:38:19 【问题描述】:我有一个使用 Spring Security 插件的 Grails 应用程序,并且使用 grails.plugin.springsecurity.controllerAnnotations.staticRules
来制定安全规则。
应用程序的一部分是一个基本知识库,只有标题和详细信息。详细信息部分使用 CKEditor 插件,该插件适用于文本、链接和一般格式没有问题,但我无法让图像上传和浏览功能正常工作。我收到“抱歉,您无权查看此页面。”每当我尝试上传或浏览服务器以查找图像时。
我将上传目录设置为默认 /uploads/,我的 CKEditor 配置如下所示:
ckeditor
config = "/js/myckconfig.js"
skipAllowedItemsCheck = false
defaultFileBrowser = "ofm"
upload
basedir = "/uploads/"
overwrite = false
link
browser = true
upload = true
allowed = []
denied = ['html', 'htm', 'php', 'php2', 'php3', 'php4', 'php5',
'phtml', 'pwml', 'inc', 'asp', 'aspx', 'ascx', 'jsp',
'cfm', 'cfc', 'pl', 'bat', 'exe', 'com', 'dll', 'vbs', 'js', 'reg',
'cgi', 'htaccess', 'asis', 'sh', 'shtml', 'shtm', 'phtm']
image
browser = true
upload = true
allowed = ['jpg', 'gif', 'jpeg', 'png']
denied = []
flash
browser = false
upload = false
allowed = ['swf']
denied = []
我假设是 Spring Security 阻止了访问,所以我尝试将 /uploads/ 目录添加到 Config.groovy 中的静态规则中,以便该部分看起来像这样
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/assets/**': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll'],
'/**/jasper/**': ['permitAll'],
'/jasper/**': ['permitAll'],
'/**/uploads/**': ['permitAll'],
'**/ck/ofm/filemanager/**': ['permitAll'],
'**/ck/ofm/filetree/**': ['permitAll'],
'/**/reports/**': ['permitAll']
]
我已经尝试了所有我能想到的 /uploads/ 和 /**/uploads/ 的变体。
我无法通过 url 直接访问上传目录或其中的测试图像,但是当我为 /images/ 目录执行此操作时可以。出于这个原因,我尝试将上传目录设置为 /images/ 目录,但我仍然得到相同的访问被拒绝。
我已经搜索了答案,我看到的最接近的帖子是this one,但这与我的问题不同,没有给出解决方案。
【问题讨论】:
你搞定了吗? 【参考方案1】:我遇到了同样的问题。尝试将此网址添加到您的列表中:
'/ck/**': ['permitAll']
(实际上我不建议允许完全访问此 url,除非您希望任何人都能够访问 CKEditor 功能)。
【讨论】:
【参考方案2】:我认为这是您尝试上传图片时发出的发布请求的问题。
ofm.gsp 中的 configUrl 将 type 和 viewMode 传递为 null,因为该文件没有上传到相应的文件夹..
configUrl="/YourApp/ck/ofm/config?fileConnector=/YourApp/ck/ofm/filemanager&type=Image&viewMode=grid";
【讨论】:
以上是关于使用 Spring Security 时如何允许 CKEditor 在 Grails 中上传图像的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security with Spring Boot:使用过滤器时允许未经身份验证的用户访问特定端点
如何允许使用 Spring Security 访问特定的 React 哈希路由?
Grails Spring Security:如何允许密码为空?
Spring Security Jwt 令牌在请求表单角度时允许所有选项方法
Spring Boot + Security:设置允许的来源时没有 Access-Control-Allow-Origin 标头