문제

사용자가 두 가지 역할의 구성원이 아닌 한 특정 URL에 대한 액세스를 제한하고 싶습니다. 이 경우 사용자가 두 보고서에있는 경우이 URL에 대한 액세스 권한 만 부여하려고합니다. 그리고 아카이빙 역할. ASP.NET 에서이 작업을 수행하는 방법이 있습니까?

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting, Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

나는 다음과 같은 것을 원한다 :

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting & Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

도움이 되었습니까?

해결책

그것은 일종의 추악하지만, 현재 사용하고있는 역할 제공 업체 (SQLROLEPROVIDER, WindowStokenRoleProvider, AuthorizationStoreroLeprovider), GetRolesforUser를 재정의하고, 기본 구현을 호출하여 역할을 결합하고 필요한만큼 결합 할 수 있습니다. 그런 다음 분명히 귀하의 사용자 정의 역할 제공 업체를 Web.config에u003CroleManager> 구성 섹션.

하나의 방법 (및 getUsersinrole)을 무시하고 필요에 따라 결합하면됩니다.

public override string[] GetRolesForUser( string username ) {
    List<string> roles = new List<string>( base.GetRolesForUser(username) );
    if( roles.Contains("Reporting") && roles.Contains("Archiving") ) {
        roles.Add("ReportingAndArchiving");
    }
    return roles.ToArray();
}

다른 팁

특정 사용자 ID, 페이지 URL 및 허용 된 역할 목록 (XML)이 주어지면 해당 URL에 액세스가 부여되는지 여부를 나타내는 비트를 반환 한 SQL 기능을 만들 수 있습니다. JavaScript 또는 DHTML 메뉴 또는 무엇이든 유효한 선택으로 보여줍니다.

당신은 할 수 있습니다 맞춤형 역할 제공 업체를 구현하십시오. 그런 다음 새로운 "가짜"역할보고 및 구조를 정의하고 사용자가 Isuserinrole 방법 내부의보고 및 보관 역할에 속하는지 확인하고 역할을보고 할 때 확인할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top