मुझे पता है कि यह एक पुरानी पोस्ट है लेकिन सोचा कि मैं अपना अनुभव साझा करूंगा क्योंकि मैं अभी इस माध्यम से गया हूं। मैं web.config का उपयोग नहीं करना चाहता था। मैं एमवीसी के कार्यान्वयन के समान वेबफॉर्म के लिए एक विशेषता बनाने का एक तरीका ढूंढ रहा था। मुझे Deran Schilling द्वारा एक पोस्ट मिली है जिसे मैंने विशेषता भाग के आधार के रूप में उपयोग किया था।
मैं एक कस्टम IPrincipal
interface IMyPrincipal : IPrincipal
{
string MyId { get; }
string OrgCode { get; }
string Email { get; }
}
और प्रधान
public class MyPrincipal : IMyPrincipal
{
IIdentity identity;
private List<string> roles;
private string email;
private string myId;
private string orgCode;
public MyPrincipal(IIdentity identity, List<string> roles, string myId, string orgCode, string email)
{
this.identity = identity;
this.roles = roles;
this.myId = myId;
this.orgCode = orgCode;
this.email = email;
}
public IIdentity Identity
{
get { return identity; }
}
public bool IsInRole(string role)
{
return roles.Contains(role);
}
public string Email
{
get { return email; }
}
public string MyId
{
get { return myId; }
}
public string OrgCode
{
get { return orgCode; }
}
}
बनाया है और पृष्ठ
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class AdminAuthorizationAttribute : Attribute
{
public AdminAuthorizationAttribute()
{
var user = (MyPrincipal)HttpContext.Current.User;
if (user.IsInRole("MyAdmin"))
return;
throw new AccessDeniedException();
}
}
पर उपयोग के लिए एक गुण बनाया है और कुछ कस्टम अपवाद
012 बनाया
और अब मैं दिए गए पृष्ठ पर उपयोग के लिए आवेदन कर सकते हैं विशेषता
[AdminAuthorization]
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
सही मुझे लगता है कि मिल गया। लेकिन क्या एमवीसी के साथ आप इसे कैसे कर सकते हैं इसके समान एक विशिष्ट विधि स्तर पर पहुंच प्रतिबंधित करने का कोई तरीका है? –
@ ब्लेयर जोन्स, आपको विधि के भीतर 'if (User.IsInRole (" somerole ")) जैसे चेक करना होगा, मुझे डर है। –
ठीक है धन्यवाद ... यही वह है जो मुझे डर था :( –