如何在使用Spring Security时允许CKEditor在Grails中上载图像

时间:2015-05-26 23:57:47

标签: grails spring-security ckeditor

我有一个使用Spring Security插件的Grails应用程序,并使用grails.plugin.springsecurity.controllerAnnotations.staticRules作为安全规则。

部分应用程序是一个基本知识库,它只包含标题和详细信息。详细信息部分使用CKEditor插件,该插件适用于文本,链接和一般格式,没有问题,但我无法使图像上传和浏览功能起作用。我得到了#34;抱歉,您无权查看此页面。"什么时候我尝试上传或浏览服务器来查找图像。

我将上传目录设置为默认/ 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 /的每个变体,我都能想到。

我无法通过网址直接访问uploads目录或其中的测试图像,但我可以在/ images /目录中执行此操作。出于这个原因,我试过将uploads目录设置为/ images /目录,但我仍然得到相同的访问权限。

我已经搜索了答案,而我发现的最近的帖子是this one,但这是一个与我不同的问题,并没有提供解决方案。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。尝试将此网址添加到您的列表中:

'/ck/**': ['permitAll']

(实际上我不建议允许完全访问此网址,除非您希望任何人都能够访问CKEditor功能。)

答案 1 :(得分:0)

我认为您在尝试上传图片时遇到的邮件请求存在问题。

ofm.gsp中的configUrl传递类型而viewMode为null因为该文件没有上传到相应的文件夹..

configUrl ="?/ YourApp / CK / OFM /配置fileConnector = / YourApp / CK / OFM /文件管理器&安培;类型=图片&安培; VIEWMODE =网格&#34 ;;