首页 文章

Grails Spring Security Rest 如何登录

提问于
浏览
2

我使用 grails 创建了示例 rest 应用程序,并使用 spring security rest 插件添加了一个安全性。我正在尝试使用休息客户端 POSTMAN 测试它,但是当我在原始数据中使用用户名和密码作为 json 发送 post 请求时,将 404 转换为'$MYAPP/api/login'和 401'$MYAPP/api/login/'。我已经关注了所有的博客和 stackoverflow,但没有为我工作的东西。这是我的代码。 在 Config.groovy

// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.example.api.auth.APIUser'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.example.api.auth.APIUserRole'
grails.plugin.springsecurity.authority.className = 'com.example.api.auth.Role'
grails.plugin.springsecurity.securityConfigType = 'InterceptUrlMap'
grails.plugin.springsecurity.interceptUrlMap = [
        '/':                    ['permitAll'],
        '/index':               ['permitAll'],
        '/index.gsp':           ['permitAll'],
        '/assets/**':           ['permitAll'],
        '/partials/**':         ['permitAll'],
        '/api/**':              ['permitAll'],
        '/**':                  ['isFullyAuthenticated()']
]
grails.plugin.springsecurity.filterChain.chainMap = [
        '/api*//**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter',  // Stateless chain
        '*//**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'                                          // Traditional chain
]

grails.plugin.springsecurity.rest.login.active=true
grails.plugin.springsecurity.rest.login.endpointUrl = '/api/login'
grails.plugin.springsecurity.rememberMe.persistent = false
grails.plugin.springsecurity.rest.login.useJsonCredentials = true
grails.plugin.springsecurity.rest.login.useRequestParamsCredentials = false
grails.plugin.springsecurity.rest.login.failureStatusCode = 401
grails.plugin.springsecurity.rest.login.usernamePropertyName =  'username'
grails.plugin.springsecurity.rest.login.passwordPropertyName =  'password'
grails.plugin.springsecurity.rest.token.storage.useGorm = true
grails.plugin.springsecurity.rest.token.storage.gorm.tokenDomainClassName = 'com.example.api.auth.AuthenticationToken'
grails.plugin.springsecurity.rest.token.storage.gorm.tokenValuePropertyName = 'token'
grails.plugin.springsecurity.rest.token.storage.gorm.usernamePropertyName = 'username'
grails.plugin.springsecurity.rest.token.storage.gorm.passwordPropertyName = 'password'
grails.plugin.springsecurity.rest.logout.endpointUrl = '/api/logout'
grails.plugin.springsecurity.rest.token.validation.headerName = 'X-Auth-Token'
grails.plugin.springsecurity.rest.token.validation.useBearerToken = false

在 BuildConfig.groovy

// security
        compile ":spring-security-core:2.0-RC4"
        compile ":spring-security-rest:1.4.0.RC5", {
            excludes ('cors','spring-security-core')
        }

如果我的配置有问题或使用 POSTMAN 进行测试,请提供反馈。

1 回答

  • 0

    这是我的最终 config.groovy 代码。

    // Added by the Spring Security Core plugin:
    grails.plugin.springsecurity.userLookup.userDomainClassName = 'example.User'
    grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'example.UserRole'
    grails.plugin.springsecurity.authority.className = 'example.Role'
    grails.plugin.springsecurity.interceptUrlMap = [
        '/':                    ['permitAll'],
        '/index':               ['permitAll'],
        '/index.gsp':           ['permitAll'],
        '/assets/**':           ['permitAll'],
        '/partials/**':         ['permitAll'],
        '/api/**':              ['isFullyAuthenticated()'],
        '/**':                  ['isFullyAuthenticated()']
    ]
    grails.plugin.springsecurity.filterChain.chainMap = [
        '/auth/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter, -rememberMeAuthenticationFilter', // Stateless chain
        '/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter', // Stateless chain
        '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'   // Traditional chain
    ]
    grails.plugin.springsecurity.rest.login.active=true
    grails.plugin.springsecurity.rest.login.endpointUrl='/auth/login'
    grails.plugin.springsecurity.rest.login.failureStatusCode=401
    grails.plugin.springsecurity.rest.login.useJsonCredentials=true
    grails.plugin.springsecurity.rest.login.usernamePropertyName='username'
    grails.plugin.springsecurity.rest.login.passwordPropertyName='password'
    grails.plugin.springsecurity.rest.logout.endpointUrl='/auth/logout'
    grails.plugin.springsecurity.rest.token.storage.useGorm=true
    grails.plugin.springsecurity.rest.token.storage.gorm.tokenDomainClassName='example.AuthenticationToken'
    grails.plugin.springsecurity.rest.token.storage.gorm.tokenValuePropertyName='tokenValue'
    grails.plugin.springsecurity.rest.token.storage.gorm.usernamePropertyName='username'
    grails.plugin.springsecurity.rest.token.generation.useSecureRandom=true
    //grails.plugin.springsecurity.rest.token.validation.headerName='X-Auth-Token'
    grails.plugin.springsecurity.rest.token.generation.useUUID=false
    grails.plugin.springsecurity.rest.token.validation.active=true
    grails.plugin.springsecurity.rest.token.validation.endpointUrl='/auth/validate'
    

相关问题