首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP 500每隔一次请求响应一次

HTTP 500每隔一次请求响应一次
EN

Stack Overflow用户
提问于 2013-01-09 02:07:53
回答 1查看 140关注 0票数 0

我已经使用筛选器实现了一个自定义身份验证方案,该筛选器在所有控制器的before拦截器中调用AuthService上的authenticate()方法。authenticate()方法使用groovy.sql.SqlUserCredentialsDataSourceAdapter尝试连接到数据库,然后进行检查以确保数据库用户具有适当的角色。数据库是Oracle,是遗留ERP的一部分,所以这是我进行身份验证的唯一方法。

当我提交一个带有无效凭据的请求时,我遇到的问题就出现了。正如预期的那样,将抛出包含"ORA-01017: invalid username/password; logon denied"的SQLException。我的try/catch代码块捕获并抑制它,并且代码正确地继续拒绝请求。但是,无论所提供的凭据是什么,下一个请求始终在500响应中返回SQLException。你知道为什么会这样吗?我能做些什么来修复它?

代码语言:javascript
复制
def authenticate(def username, def password) {
    def authorized = false
    Sql sql

    if (username != null && !username.equals('')) {
        try {
            dataSource.setCredentialsForCurrentThread(username, password)

            sql = Sql.newInstance(dataSource)
            def row = sql.firstRow("**SQL removed for privacy**")

            if (row != null && row.has_permission == 1) {
                authorized = true
            }
        } catch (Exception e) {

        } finally {
            sql.close() 
        }
    }

    return authorized
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 19:51:31

我认为dataSource是应用程序的单例,所以在您设置了不正确的用户名和密码后,第一次尝试连接(通过任何位置)时,将会遇到无效的用户名和密码。

因此,当异常发生时,您必须恢复到默认用户名和密码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14221327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档