Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails/Spring安全访问被拒绝_Grails_Spring Security - Fatal编程技术网

Grails/Spring安全访问被拒绝

Grails/Spring安全访问被拒绝,grails,spring-security,Grails,Spring Security,尝试查看网站上的不同页面时出现此错误。 每当登录后,我试图访问其中一个页面时,IntelliJ Idea ultimate中的日志窗口就会出现此错误。我正在使用安全注释 org.springframework.security.access.AccessDeniedException: Access is denied at grails.plugin.springsecurity.access.vote.AuthenticatedVetoableDecisionManager.deci

尝试查看网站上的不同页面时出现此错误。 每当登录后,我试图访问其中一个页面时,IntelliJ Idea ultimate中的日志窗口就会出现此错误。我正在使用安全注释

org.springframework.security.access.AccessDeniedException: Access is denied
    at grails.plugin.springsecurity.access.vote.AuthenticatedVetoableDecisionManager.decide(AuthenticatedVetoableDecisionManager.java:43)
    at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
    at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53)
    at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
谁能告诉我我可以看什么来检查这个问题吗。我已尝试更改config.groovy文件、URLmapping.groovy文件

这是我的config.groovy

2015-12-28 09:48:54,527 [http-bio-8080-exec-12] DEBUG    intercept.FilterSecurityInterceptor  - Secure object: FilterInvocation: URL: /list.html; Attributes: [_DENY_]
2015-12-28 09:48:54,527 [http-bio-8080-exec-12] DEBUG intercept.FilterSecurityInterceptor  - Previously Authenticated: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@fec5dc2f: Principal: grails.plugin.springsecurity.userdetails.GrailsUser@586034f: Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN,ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@2eb76: RemoteIpAddress: 127.0.0.1; SessionId: B3587266591A115997973363DF758EB8; Granted Authorities: ROLE_USER, ROLE_ADMIN
2015-12-28 09:48:54,527 [http-bio-8080-exec-12] DEBUG hierarchicalroles.RoleHierarchyImpl  - getReachableGrantedAuthorities() - From the roles [ROLE_USER, ROLE_ADMIN] one can reach [ROLE_USER, ROLE_ADMIN] in zero or more steps.
2015-12-28 09:48:54,557 [http-bio-8080-exec-12] DEBUG access.ExceptionTranslationFilter  - Access is denied (user is not anonymous); delegating to AccessDeniedHandler
Message: Access is denied
    Line | Method
->>   43 | decide    in    grails.plugin.springsecurity.access.vote.AuthenticatedVetoableDecisionManager
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     53 | doFilter  in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
|     62 | doFilter  in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
|   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run       in java.lang.Thread
2015-12-28 09:48:54,559 [http-bio-8080-exec-12] DEBUG filter.UrlMappingsFilter  - Executing URL mapping filter...
2015-12-28 09:48:54,649 [http-bio-8080-exec-12] DEBUG filter.UrlMappingsFilter  - Matched URI [/login/denied] to URL mapping [/(*)/(*)?/(*)?(.(*))?], forwarding to [/grails/login/denied.dispatch] with response [class org.springframework.security.web.context.HttpSessionSecurityContextRepository$SaveToSessionResponseWrapper]
2015-12-28 09:48:54,649 [http-bio-8080-exec-12] DEBUG context.SecurityContextPersistenceFilter  - SecurityContextHolder now cleared, as request processing completed.
这是我的控制器和注释

grails.app.context='/'

// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName =   'com.dtech.security.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.dtech.security.UserRole'
grails.plugin.springsecurity.authority.className = 'com.dtech.security.Role'
grails.plugin.springsecurity.failureHandler.defaultFailureUrl='/?login_error=1'
grails.plugin.springsecurity.auth.loginFormUrl='/' //send to index page for login
//redirect to Dynics home page on logout
grails.plugin.springsecurity.logout.afterLogoutUrl='http://www.google.com'
//grails.plugin.springsecurity.failureHandler.useForward=false
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
        '/'               : ['permitAll'],
        '/index'          : ['permitAll'],
        '/index.gsp'      : ['permitAll'],
        '/assets/**'      : ['permitAll'],
        '/**/js/**'       : ['permitAll'],
        '/**/css/**'      : ['permitAll'],
        '/**/images/**'   : ['permitAll'],
        '/**/favicon.ico' : ['permitAll'],
        //'/api/**'         : ['permitAll'],
        '/rmalog/**'      : ['ROLE_ADMIN','ROLE_USER'],
        '/api/rmalog/**'      : ['ROLE_ADMIN','ROLE_USER'],
这是我的rmalog视图源

package com.dtech.controllers

import com.dtech.PagedRestfulController
import com.dtech.domain.Rmalog
import grails.plugin.springsecurity.annotation.Secured
import org.codehaus.groovy.grails.commons.GrailsApplication

@Secured(['ROLE_ADMIN','ROLE_USER'])
class RmalogController extends PagedRestfulController {

def exportService
GrailsApplication grailsApplication

RmalogController(){
    super(Rmalog)
}

def export(){

    if(params?.formatRequest && params.formatRequest != "html"){

        if(!params.max) params.max = 15000 //set max for records export

        response.contentType = grailsApplication.config.grails.mime.types[params.formatRequest]
        response.setHeader("Content-disposition", "attachment; filename=rmalog.${params.extension}")

        def exportData = loadPagedResults(params);

        exportService.export(params.formatRequest,
                response.outputStream, exportData, [:], [:])
    }
}
}

默认情况下,拒绝访问所有URL,除非对请求的URL有规则。阅读更多信息


您的错误表明对
/list.html
的访问被拒绝,这是有意义的,因为
静态规则
映射中没有任何内容覆盖该URL,并且您没有提到控制器中处理该URL的任何注释。

list.html位于javascript文件夹中,实际上是list.tpl.html。我已将控制器注释添加到问题中。如何将URL添加到静态规则映射中的访问属性?@Burt Beckwith:当我将/list.html添加到静态URL映射时,错误消失了,但我无法在页面上看到任何内容,它是空白的。有什么建议吗?你能包括你的viewSource吗?@Raz Abramov我已经编辑了这个问题并添加了viewSource这个文件dynics app/rmalog/模块正在被提取吗?@Burt Beckwith我得到了这个错误-->“未捕获的错误:[$injector:nomod]模块“grails/templates/directives/crudbreadcrumps.tpl.html”不可用!您可能拼错了模块名称或忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。“有什么建议吗?”?
 <!DOCTYPE html>
 <html>
 <head>
  <meta name="layout" content="angular"/>
  <asset:javascript src="dynics-app/rmalog/module"/>
 </head>

 <body ng-app="dynicsApp.rmalog">

</body>
</html>