2009-11-03 2 views
0

나는 맞춤형 webpart를 개발했습니다. 페이지에 추가 할 수 있으며 사이트 소유자는 문제없이 페이지를 볼 수 있습니다.웹 파트 때문에 사이트 회원/방문자가 액세스가 거부되었습니다. 페이지가 잘못되었습니다.

그러나 사이트 방문자/사용자가 액세스 거부 된 오류 페이지로 리디렉션됩니다. 물론, 나는 정상적인 사용자가 할 수없는 것들을하고 있어야합니다.

하지만 버그는 저에게 webpart 생성자 또는 심지어 변수 선언에 중단 점을 배치하면 충돌을 일으키지 않습니다! (제한된 권한으로 페이지를 보려고하는 경우). 하지만 브라우저에서 액세스 거부 페이지가 표시됩니다. 그러나 해당 웹 파트를 닫으면 즉시 해당 페이지에 액세스 할 수 있으며 모든 것이 정상입니다.

여기 잡기가 무엇입니까? 어떤 문장이 유죄인지 확인하기 위해 디버거로 예외를 잡을 수 있기를 기대했지만 webpart가 코드를 실행하지 않고 예외가 발생하는 것으로 보입니다.

편집 : 죄송합니다. 이제 디버거가 해당 중단 점에 도달합니다. 기호가로드 되었기 때문에 변경된 내용을 모릅니다.

답변

0

해결책을 찾았습니다.

사용자가 특정 그룹에 속하는지 여부를 결정하기 위해 해당 그룹 사용자에 액세스하려고합니다. 사용자가 이러한 권한이없는 경우이 불가능했다, 그것은

" 코드가 최적화되어 있기 때문에 식을 계산할 수 없습니다 또는 기본 프레임 상단에 메시지와 함께 내부 예외의 어떤 종류를 던지고 있었다 호출 스택의. "

어쨌든, 이제 SPUser.Groups (SPGroupCollection)을 반복하고 그룹 프린시 펄을 열거하고 그가 있는지 여부를 확인하기보다는 일치하는 그룹이 있는지 확인했습니다.

2

Sharepoint 사이트의 신뢰 수준은 무엇입니까? Fulltrust에 일시적으로 액세스 문제가 있는지 확인할 수 있습니다.

그렇다면 코드 액세스 보안 (CAS) 문제가있을 수 있습니다. 나의 첫 번째 본능은 어셈블리에 일반 사용자를 위해 올바르게 실행될 수있는 권한이 필요 없다는 것입니다. webpart에 대한 manifest.xml의 맞춤 CAS 항목을 사용하여 구성 할 수 있습니다 (예 : 외부 리소스를 호출하는 경우 System.New.WebPermission을 구성하고 액세스 할 수있는 URL을 정의해야 할 수 있습니다. 자세한 내용은 U2U site에서 확인할 수 있습니다.

또한 webpart는 무엇을합니까? 일반 사용자가 액세스 할 수없는 리소스 (예 : 일부 사이트의 목록)에 액세스하려는 경우 SPSecurity.RunWithElevatedPrivilages 메서드를 사용해야하므로 필요한 권한이 부여됩니다 (해당 사이트 내에서 새 Site 인스턴스를 만들 때주의하십시오. 메서드를 사용하여 컨텍스트가 올바르게 채워지도록합니다.

0

방문자 그룹에 권한 (개인 웹 파트 업데이트)을 제공해야합니다. 그러나 권장하지 않습니다. 원하는 경우 별도의 권한 수준을 만들어 방문자 그룹과 연결할 수 있습니다.

건배 !!

관련 문제