我需要从我的 Django 站点打开 SQLServer 报告。我可以通过在会话中存储 URL 后重定向到 Django 视图中的报表服务器 URL 来做到这一点,即:
def show_report(request):
return redirect(request.session.get('_reporturl'))
这工作正常,但我想避免 ReportServer 提示输入用户名和密码。我已经得出结论(可能是错误的)最好的方法是使用 HTTP 基本身份验证。
我在另一篇基本身份验证的帖子中找到了以下代码:
import urllib2, base64
username = '<username>'
password = '<password>'
request = urllib2.Request(request.session.get('_reporturl'))
base64string = base64.standard_b64encode('%s:%s' % (username, password))
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
但是我不能让它在视图中工作(Django 视图需要返回一个 HTTPResponse,所以我不确定如何使用这个代码)。
我尝试了以下方法:
return redirect('http://<username>:<password>@' + request.session.get('_reporturl'))
这似乎将基本身份验证数据传递给报表服务器,但我收到了几个进一步的用户名和密码提示。
是否有人设法在 Django 中使用基本身份验证,或者是否有人设法在没有提示进行身份验证的情况下打开 SQLServer 报告?