SORU
30 Kasım 2009, PAZARTESİ


Mağaza/kimliği doğrulanmış kullanıcılar rol ata

MVC kullanmak için bir site yükseltme duyuyorum ve Kimlik Doğrulaması ayarlamak için en iyi yolu arıyorum.

Bu noktada, günlük Active Directory dışı çalışmalar var: bir kullanıcı adı ve parola doğrulama ve tanımlama bilgisi Kimlik doğrulaması ayarı.

Nasıl benim denetleyicileri kullanıcı siteye gider olarak bu rolleri görmek için giriş sırasında kullanıcı rolü bilgi deposu.

[Authorize(Roles = "admin")]

Sorun Active Directory rolleri listesi almak zorundayım. Ben sadece denetleyicileri onları görmek böylece onları nereye koyacağımı bilmiyorum.

CEVAP
1 Aralık 2009, Salı


Roller HttpContext IPrincipal eklenir. ** 9, bir ayrıştırma yapıcı rol listesi oluşturun ve HttpContext ayarlayabilirsiniz.Kullanıcı. Bu GenericPrincipal sonra User.IsInRole("role") [Authorize(Roles="role")] öznitelik üzerinden erişilebilir olacak

Bunu yapmanın bir yolu (C#), kimlik doğrulama bileti oluştururken kullanıcı virgülle ayrılmış bir dize olarak rolleri eklemek için veri parametresi

string roles = "Admin,Member";
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
  1,
  userId,  //user id
  DateTime.Now,
  DateTime.Now.AddMinutes(20),  // expiry
  false,  //do not remember
  roles, 
  "/");
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
                                   FormsAuthentication.Encrypt(authTicket));
Response.Cookies.Add(cookie);

Daha sonra kimlik doğrulaması bilet rol listesine erişmek ve Küresel bir GenericPrincipal oluşturun.asax.cs

protected void Application_AuthenticateRequest(Object sender, EventArgs e) {
  HttpCookie authCookie = 
                Context.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (authCookie != null) {
      FormsAuthenticationTicket authTicket = 
                                  FormsAuthentication.Decrypt(authCookie.Value);
      string[] roles = authTicket.UserData.Split(new Char[] { ',' });
      GenericPrincipal userPrincipal =
                       new GenericPrincipal(new GenericIdentity(authTicket.Name),
                                            roles);
      Context.User = userPrincipal;
    }
  }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • Hak5

    Hak5

    7 EYLÜL 2005
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010