2016-08-11 7 views
10

मैं डाउनलोड किया है nu-मिल मैं डॉक्स के अनुसार Owin आधारित प्राधिकरण कॉन्फ़िगर इस प्रकार है, लेकिन मैं IntelliSense त्रुटि मैं भी मिल DashboardOptions.AuthorizationFilters is obsolete please use Authorization property insteadHangfire डैशबोर्ड प्राधिकरण कॉन्फ़िग काम नहीं कर

के रूप में कोशिश कर रहा हूँ Hangfire.Dashboard.Authorization

पैकेज IntelliSense त्रुटि मिलती है The type or namespace AuthorizationFilter and ClaimsBasedAuthorizationFilterd not be found

using Hangfire.Dashboard; 
using Hangfire.SqlServer; 
using Owin; 
using System; 

namespace MyApp 
{ 
    public class Hangfire 
    { 
     public static void ConfigureHangfire(IAppBuilder app) 
     { 
      GlobalConfiguration.Configuration 
      .UseSqlServerStorage(
       "ApplicationDbContext", 
       new SqlServerStorageOptions 
        { QueuePollInterval = TimeSpan.FromSeconds(1) }); 

      var options = new DashboardOptions 
      { 
       AuthorizationFilters = new[] 
       { 
        new AuthorizationFilter { Users = "admin, superuser", Roles = "advanced" }, 
        new ClaimsBasedAuthorizationFilter("name", "value") 
       } 
      }; 

      app.UseHangfireDashboard("/hangfire", options); 
      app.UseHangfireServer(); 
     } 
    } 
} 

* अद्यतन *

के बाद से ऊपर nuget पैकेज does not काम मैं अपने स्वयं के कस्टम फिल्टर बनाने के लिए प्रयास किया है:

public class HangfireAuthorizationFilter : IAuthorizationFilter 
{ 
    public bool Authorize(IDictionary<string, object> owinEnvironment) 
    { 
     // In case you need an OWIN context, use the next line, 
     // `OwinContext` class is the part of the `Microsoft.Owin` package. 
     var context = new OwinContext(owinEnvironment); 

     // Allow all authenticated users to see the Dashboard (potentially dangerous). 
     return context.Authentication.User.Identity.IsAuthenticated; 
    } 
} 

कैसे मैं केवल व्यवस्थापकीय भूमिकाएं करने के लिए बाधित कर सकता हूं यानी वाक्य रचना क्या है?

+0

एचएफ का कौन सा संस्करण उपयोग कर रहे हैं:

public partial class Startup { private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod ().DeclaringType); public void Configuration(IAppBuilder app) { //Hangfire Config GlobalConfiguration.Configuration.UseSqlServerStorage ("HangFireJobs"); app.UseHangfireServer(); log.Debug("Application Started"); ConfigureAuth(app); //this call placement is important var options = new DashboardOptions { Authorization = new[] { new CustomAuthorizationFilter() } }; app.UseHangfireDashboard("/hangfire", options); } } 

फिर अपने प्रमाणन config कक्षा में आप इस के रूप में सरल कुछ कर सकते हैं? कृपया कक्षा में आयात किए गए नामस्थानों को भी दिखाएं। – Yogi

+0

@ योगी हैंगफायर कोर 1.6.1 है और हैंगफायर। डैशबोरड। प्राधिकरण 2.1.0 है। मैंने नामस्थान दिखाने के लिए पोस्ट को अपडेट किया है। – adam78

उत्तर

1

इस तरह से डैशबोर्ड विकल्पों को परिभाषित करना मेरे लिए काम किया -

var options = new DashboardOptions 
    { 
     AuthorizationFilters = new List<IAuthorizationFilter> 
     { 
      new Hangfire.Dashboard.AuthorizationFilter { Users = "admin, superuser", Roles = "advanced" }, 
      new Hangfire.Dashboard.ClaimsBasedAuthorizationFilter("name", "value") 
     } 
    }; 

मैं निम्नलिखित नामस्थान आयात किया है -

using System; 
using Owin; 
using Hangfire; 
using Hangfire.Dashboard; 
using System.Collections.Generic; 
using Hangfire.SqlServer; 

हाँ, यह मुझे AuthorizationFilters के लिए deprecated चेतावनी दिखा और प्रयोग करने का सुझाव है Authorization, मूल रूप से IAuthorizationFilter इंटरफ़ेस संस्करण 2.0 में निकाला जा रहा है, और IDashboardAuthorizationFilter इंटरफ़ेस का उपयोग किया जाना चाहिए।

इसके लिए आप अपना खुद का कस्टम फ़िल्टर IDashboardAuthorizationFilter कार्यान्वित कर सकते हैं और इसके बजाय इसका उपयोग कर सकते हैं।

public class MyAuthorizationFilter : IDashboardAuthorizationFilter 
{ 
    public bool Authorize(DashboardContext context) 
    { 
     //Implement 
    } 
} 
+0

मुझे अभी भी त्रुटि मिलती है 'टाइपस्पेस हैंगफायर। डैशबोर्ड' में टाइप या नेमस्पेस प्राधिकरण फ़िल्टर मौजूद नहीं है। मैंने आपके नाम के समान नामस्थान का उपयोग किया है? ऐसा लगता है कि यह पैकेज पुराना है। – adam78

+0

मैंने अपना खुद का फ़िल्टर लागू किया है लेकिन मैं केवल व्यवस्थापक भूमिकाओं तक सीमित कैसे हूं - ऊपर अपना संपादन देखें? – adam78

13

तुम्हें यकीन कॉन्फ़िगर (ऐप्लिकेशन) विधि अपने hangfire डैशबोर्ड कॉन्फ़िगर करने से पहले अपने Startup.cs कक्षा में कहा जाता है बनाने की जरूरत है।

public class CustomAuthorizationFilter : IDashboardAuthorizationFilter 
{ 

    public bool Authorize(DashboardContext context) 
    { 
     if (HttpContext.Current.User.IsInRole("Admin")) 
     { 
      return true; 
     } 

     return false; 
    } 
} 
+0

महान जवाब! धन्यवाद! –

+0

अच्छा यह मेरे लिए काम किया वोट! –

संबंधित मुद्दे