当前位置: 首页 > 知识库问答 >
问题:

Grails Spring Security Rest如何登录

葛昕
2023-03-14

我已经创建了使用grails作为示例的rest应用程序,并使用Spring Security rest插件添加了安全性。我正在尝试使用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个答案

吕越彬
2023-03-14

这是我最后的配置。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'
 类似资料:
  • 问题内容: 我是JavaScript和Puppeteer的新手。我在下面尝试了登录代码,但失败了。相比之下,我添加并成功。我该如何解决? 问题答案: 在页面触发任何导航操作之后等待导航。您可能应该在页面之后添加waitForNavigation。单击。 它将等到两个诺言都解决。 所以现在您的初始代码应如下所示: 注意:除了回答,我无法测试此操作,因为我没有登录名,也无法看到您面临的实际错误。如果您

  • 问题内容: 我正在使用ADO.NET来访问SQL Server 2005,并且希望能够从我正在调用的T-SQL存储过程中进行登录。有可能吗? 使用ADO.NET时,我看不到’print’语句的输出,因为我只想使用日志记录进行调试,所以理想的解决方案是从SysInternals向DebugView发出消息。 问题答案: 我通过按照Eric Z Beard的建议编写一个SQLCLR过程来解决此问题。程

  • 我的控制台被来自ChromeDriver和IEDriver的不想要的日志消息填满了。 我尝试过:但是不起作用。我尝试了的各种实现,但都不起作用。

  • 如何登入/注销 若要使用此机能,可能需先更新系统软件。 要进入(PlayStation®Store)在线购物或使用(账户管理)时,需先登入PlayStation®Network的账户。 如何登入 1. 进入主选单的(PlayStation®Netrowk)后,选择(账户管理)或(PlayStation®Store)。 2. 输入登入ID(电子邮件地址)与密码。 输入新建(PlayStation®N

  • 如何登入/注销     如何登入 登入后,即能开始使用 Skype 。 1. 进入(网络)后选择(Skype™)。 2. 选择[登入]。 3. 输入[ Skype 账号]和[密码]。 4. 选择[登入]。 登入成功后,即会显示 Skype 的选单画面。 提示 点选[在每次 Skype 启动时自动登入]后,下次起即不必输入[ Skype 账号]和[密码]并能立即登入。但保存密码后,可能会有第三者擅自

  • 我正在使用Larave Jetstream livewire,我想修改登录名。 从初始值为1的隐藏输入字段“is_admin”登录 当用户提交登录表单后端检查时,使用数据库表字段的is\u admin=1 表结构:名称、电子邮件、密码、is_admin is_admin=0或1 我想检查is_admin标志,如果提供的凭据与电子邮件、密码和is_admin=1匹配,则只有用户可以登录。