2009-03-07 22 views

cevap

2

Hakların yapılandırması ve sağlayıcının kendisi web.config dosyasında tanımlanabilir. Farklı alt sayfalara hakları uygulamak için, içerik sayfalarını web.config dosyasındaki Location.System.Web.Authorization düğümünden kilitleyebilirsiniz (daha fazla bilgi here).

Özel bir sağlayıcı oluşturmak için, (System.Web.Security) RoleProvider özet sınıfından miras almanız ve ihtiyacınız olan yöntemleri uygulamanız yeterlidir (normalde IsUserInRole, GetUsersInRole ve GetRolesForUser, ancak bellek şu anda biraz sisli olsa da) Asp.Net, role dayalı yetkilendirme yapmak için kutunun dışına çağrı yapar, böylece hepsini uygulamaya koymak isteyebilirsiniz). Daha Fazla Bilgi here. Bu işlem tamamlandıktan sonra

, sen web.config'de kullanılacak sağlayıcı kayıt:

rolünüz sağlayıcısını kullanmak için uygulamanızı kurmak ve hemen hemen hiç çalışma ile, sen koşu yukarı ve konum olacak
<configuration> 
    <system.web> 
    <roleManager enabled="true" 
     defaultProvider="YourRoleProviderHere"> 
     <providers> 
     <add name="YourRoleProviderHere" 
      type="YourRoleProviderHere, YourRoleProviderAssembly" 
      description="Your totally awesome role provider" 
     /> 
     </providers> 
    </roleManager> 
    ... 

. Tüm standart yetkilendirme yöntemleri hala çalışır (User.IsInRole) ve Asp.Net ile tümleşiksiniz.

+0

Sitemdeki yerleşik giriş kontrollerini kullanmalı mıyım yoksa rolleri mevcut koda göre kullanabilir miyim? – Caveatrob

0

Sen HttpModule kullanmak da deneyebilirsiniz: - Bu link size verecektir : - Açıkçası şu DbTables yapıyı gerekir - istek istenecek hangi sayfada olduğunu bilemez böylece örnek uygulamasında kodunu değiştirme iyi bir başlangıç ​​

Şimdi

bu kaba size aşağıdaki set verecekti tablo ifadeleri oluşturmak:

  • her kullanıcının bir veya daha fazla UserRoles
  • her sayfa olacak CONFIGUR olacak mümkün

Bazı DDL SQL fikri etrafında UserRole başına erişilmesini: temelde

CREATE TABLE [User](
    [UserId] [int] IDENTITY(1,1) NOT NULL, 
    [FirstName] [varchar](100) NOT NULL, 
    [SecondName] [varchar](100) NULL, 
    [LastName] [varchar](100) NOT NULL, 
    [DomainName] [varchar](100) NOT NULL, 
    [UserRoleId] [int] NOT NULL, 
    [Password] [nvarchar](100) NOT NULL 
) ON [PRIMARY] 

GO 

CREATE TABLE [dbo].[UserRole](
    [UsersRoleId] [int] IDENTITY(1,1) NOT NULL, 
    [RoleId] [int] NOT NULL, 
    [UserId] [int] NOT NULL 
) ON [PRIMARY] 



CREATE TABLE [ga].[Roles](
    [RoleId] [int] IDENTITY(1,1) NOT NULL, 
    [RoleName] [varchar](50) NOT NULL, 
    [RoleDefinition] [varchar](1000) NULL 
) ON [PRIMARY] 

GO 

CREATE TABLE [dbo].[Page](
[PageId] [int] IDENTITY(1,1) NOT NULL, 
[PageName] [varchar](200) NOT NULL, 
[PageDescription] [varchar](max) NOT NULL, 
[PageTitle] [varchar](50) NOT NULL 
) ON [PRIMARY] 

GO 


CREATE TABLE [dbo].[PagePerUserRole](
    [PageForRoleId] [int] IDENTITY(1,1) NOT NULL, 
    [UserRoleId] [int] NOT NULL, 
    [PageId] [int] NOT NULL 
) ON [PRIMARY] 

GO 

VEYA CustomBaseClass

aynı ama kullanımı bazı çok erken olaya erişimi olup olmadığını kontrol ediyorum asp.net sayfa yaşam döngüsü - OnInit

Bu daha alışılmamış bir yoldur - ancak karmaşık kimlik doğrulama mekanizması kullanarak bir uygulama yazdım (3-yazılım sistemi kullanarak) ve üretimde bir süre çalıştığı görülmektedir;