ajax请求在spring security中被拒绝,Grails

Posted

技术标签:

【中文标题】ajax请求在spring security中被拒绝,Grails【英文标题】:ajax request denied in spring security , Grails 【发布时间】:2014-06-03 17:07:11 【问题描述】:

嗨,在我的 grails 应用程序中,我使用的是 spring security

在我的一个视图页面 (GSP) 我正在对其中一个控制器中的操作进行 ajax 调用 但请求被拒绝,我最终在登录控制器中的“ajaxDenied()”操作中结束

这是我的 ajax 调用

function setTagged(id)

    alert(id);
    $.ajax(
        url: "./email/setTagged",
        type:"post",
//      data:ids:JSON.stringify(idList), option:option, id:id
        success: function(data) 
            alert(data); //<-----this logs the data in browser's console
        ,
        error: function(xhr)
            alert(xhr.responseText); //<----when no data alert the err msg
        
    );
    alert("here 1");

这是我的 config.groovy 部分,其中 spring 安全插件允许哪些页面是 无障碍

// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.spi.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.spi.UserRole'
grails.plugin.springsecurity.authority.className = 'com.spi.Role'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    '/':                              ['permitAll'],
    '/index':                         ['permitAll'],

    '/login/*':                       ['permitAll'],
    '/home/*':                       ['permitAll'],
    '/logout/*':                      ['permitAll'],

    '/message/*':                     ['permitAll'],
    '/ticket/*':                      ['permitAll'],
    '/email/*':                       ['permitAll'],
    '/role/*':                        ['permitAll'],
    '/user/*':                        ['permitAll'],


    '/index.gsp':                     ['permitAll'],
    '/**/js/**':                      ['permitAll'],
    '/**/css/**':                     ['permitAll'],
    '/**/images/**':                  ['permitAll'],
    '/**/favicon.ico':                ['permitAll']]

任何建议我如何通过 ajax 调用从我自己的控制器调用任何操作???

【问题讨论】:

【参考方案1】:

你的 spring-security 插件是什么版本的?

我不知道是不是这个问题,但 2.0 版默认情况下更安全,并使用悲观锁定(What's New 和 Pessimistic Lockdown)。

您是否为您的操作定义了@secured 注解?

【讨论】:

嗯,是的,我正在使用 2.0 版,我仍然可以通过任何方式玩 Ajax 吗?? 当然可以!如果是注释问题,您只需在控制器中添加此导入: import grails.plugin.springsecurity.annotation.Secured @Secured(['IS_AUTHENTICATED_ANONYMOUSLY']) class YourController ... 跨度> 你可以通过link找到更多关于注解的信息

以上是关于ajax请求在spring security中被拒绝,Grails的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security Ajax 登录在以下请求中成功验证 null

Spring Security CSRF令牌存储库Cookie是否可以自动满足所有Ajax请求?

Spring Security - 所有 JQuery Ajax 发布请求都返回 404

Spring Security CSRF 令牌存储库 Cookie 是不是会自动适用于所有 Ajax 请求?

Grails spring security在向控制器操作发出ajax请求时出现403错误

Spring Security教程---- 自定义AccessDeniedHandler