gpt4 book ai didi

grails - 每秒HTTP 500响应

转载 作者:行者123 更新时间:2023-12-02 15:34:18 24 4
gpt4 key购买 nike

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

我使用无效的凭据提交请求时,会遇到我遇到的问题。会按预期引发包含"ORA-01017: invalid username/password; logon denied"的SQLException。我的try / catch块捕获并抑制了它,并且代码在拒绝请求时正确进行。但是,无论所提供的凭据如何,下一个请求始终在500响应中返回SQLException。关于这是为什么的任何想法以及我可以采取哪些措施来解决?

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
}

最佳答案

我认为dataSource对于应用程序来说是单例,因此在您设置此错误的用户名和密码后,第一次尝试建立连接(在任何地方)都将击中无效的用户名和密码。

因此,发生异常时,您必须返回默认的用户名和密码。

关于grails - 每秒HTTP 500响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com