SSRS 報表 如何匿名查看 昨晚一直研究怎麼能匿名訪問報表然後給客戶看呢? 研究了好幾種辦法 我試過的分為三種,其中推薦我認為相對可控一點。 1.修改SSRS配置文件來禁止他驗證登陸用戶許可權 操作過的文章:SSRS匿名登錄 可以完全匿名訪問,因為我們系統是涉及到客戶要自己做報表的,所以這裡屏蔽了權
SSRS 報表 如何匿名查看
昨晚一直研究怎麼能匿名訪問報表然後給客戶看呢? 研究了好幾種辦法 我試過的分為三種,其中推薦我認為相對可控一點。 1.修改SSRS配置文件來禁止他驗證登陸用戶許可權
操作過的文章:SSRS匿名登錄
可以完全匿名訪問,因為我們系統是涉及到客戶要自己做報表的,所以這裡屏蔽了許可權問題,那麼這種辦法對我來說是不可行的。
2.修改IIS配置
操作過的文章:匿名訪問的一個間接方法
這種辦法和第三種類似但是這個是直接操作IIS的如果集成到系統中也不是很科學。
我用的是通過程式偽裝登陸之後獲得報表
我覺得這樣的好處是,可以控制此賬戶只有瀏覽的許可權,並不破壞任何東西
需要做的就是兩點:
1.前臺還是一樣,一個ScriptManager 一個ReportViewer
2.而後臺代碼這樣寫。其中把登陸用戶名和賬戶都存到存到配置文件當中。請自行添加
3.這個類的介紹:https://msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.ireportservercredentials.aspx
public partial class One : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ReportParameter para = new ReportParameter("ReportParameter1", "1"); ReportViewer1.ServerReport.ReportServerCredentials = new MyReportServerCredentials(); ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://報表伺服器地址/reportserver"); ReportViewer1.ServerReport.ReportPath = "/報表地址"; ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { para }); } } } [Serializable] public sealed class MyReportServerCredentials : IReportServerCredentials { public WindowsIdentity ImpersonationUser { get { // Use the default Windows user. Credentials will be // provided by the NetworkCredentials property. return null; } } public ICredentials NetworkCredentials { get { // Read the user information from the Web.config file. // By reading the information on demand instead of // storing it, the credentials will not be stored in // session, reducing the vulnerable surface area to the // Web.config file, which can be secured with an ACL. // User name string userName = ConfigurationManager.AppSettings ["myReportViewerUser"]; if (string.IsNullOrEmpty(userName)) throw new Exception( "Missing user name from web.config file"); // Password string password = ConfigurationManager.AppSettings ["MyReportViewerPassword"]; if (string.IsNullOrEmpty(password)) throw new Exception( "Missing password from web.config file"); // Domain string domain = ConfigurationManager.AppSettings ["MyReportViewerDomain"]; if (string.IsNullOrEmpty(domain)) throw new Exception( "Missing domain from web.config file"); return new NetworkCredential(userName, password, domain); } } public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority) { authCookie = null; userName = null; password = null; authority = null; // Not using form credentials return false; } }
可以成功訪問了。。