드디어 해결했습니다!
귀가후에 이것저것 해보다가 UserId(Account) 클레임 비교를 단순 문자열로 해당 아이디를 입력하니 정상 동작하길래 DotNetNoteSettings의 GetSection값을 못불러오고 있다는 결론을 내렸습니다ㅡ만, 왜 안되는지는 알 수가 없어 또 한참을 헤맸습니다.
저는 책 내용을 기반으로 입력했던지라 경고가 뜨던 IHostingEnvironment 대신 IWebHostEnvironment로 바꾼 상태로 입력한 컨픽빌더를 사용중이었는데, 이걸로도 컨트롤러를 통한 뷰 출력 등은 잘 됐었지만 용도가 달라서? 그런지 Claims에선 작동을 안했던 것 같습니다.
그 뒤로도 이래저래 바꿔봤지만 안돼서 다시 질문을 올리려다 마지막으로 dnn세팅json 내용을 appsettings.json에 값을 넣었더니 정상동작 하길래, 다른건 다 괜찮고 json 파일만 인식을 못하고 있다고 판단, 이쪽으로 검색하니 program.cs에 AddJsonFile 메서드를 입력하는 예제가 있었습니다.
그래서 DotNetNoteV31의 Program.cs를 열어보니 해당 내용이 들어있어서 해결할 수 있었습니다..!
PS - DNN3.1/6 과 하와소3.1/5 받아놓고 조금씩 참고하면서 응용해보고 있습니다. 감사합니다. :D
On 2022-11-08 오후 1:40:00, '레드플러스' wrote:
안녕하세요.
우선,
다음 링크의 Administrators Policy 설정 관련 4단계를 참고해보세요.
[1]번 주석부터 [4]번 주석까지 본인이 작성한 소스와 비교해 보세요.
Administrators policy · VisualAcademy/DotNetNote@fee698d · GitHub
로그인 페이지에서 UserId를 Account로 변경하셨나요?
그 부분도 확인해보세요.
또한,
Admin 컨트롤러에는 Authorize 특성은 딱 한 번만 주면 됩니다.
[Authorize("Administrators")]
나머지 사항은
제 강의 최신 소스를 참고하세요.
https://github.com/VisualAcademy/DotNetNote
https://www.dotnetnote.com/
감사합니다.
On 2022-11-08 오전 9:48:00, '김민태' wrote:
게시판 프로젝트의 공지 올리기 과정 중 Administrators 인증에 실패해서 허용되지 않은 접근Forbidden으로 이동합니다.
POCO 세팅까지 해놔서 로그인 아이디에 따라 버튼 표시여부는 작동하지만, 클릭했을 때 작동하지 않고 인증에 실패합니다. 혹시나 싶어 정책으로 바꿔봐도 안되네요..
[Authorize("Administrators")]
[Authorize(Policy = "Administrators")]
인증을 빼버리거나 Users 정책까지만 허용하면 작동합니다.
services.Configure<DotNetNoteSettings>(Configuration.GetSection("DotNetNoteSettings"));
services.AddAuthorization(options =>
{
options.AddPolicy(
"Users", policy => policy.RequireRole("Users"));
options.AddPolicy(
"Administrators",
policy => policy.RequireRole("Users")
.RequireClaim("Account", Configuration
.GetSection("DotNetSettings")
.GetSection("SiteAdmin").Value));
});