/ Pages의 특정 폴더에 각각 포함 된 여러 응용 프로그램이있는 프로젝트가 있습니다./Pages/PTW,/Page/JM 등. 이미 각 페이지에 대해 사용자 인증 및 역할 관리를 구현했습니다. 특정 회사 사용자가 특정 폴더의 페이지에 액세스 할 수 있도록 회사에 대한 정책 인증을 구현하고 싶습니다.
using System;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using RoSafety.Models;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using RoSafety.Data;
public class AccessCodeRequirement : IAuthorizationRequirement
{
public string AccessCode { get; set; }
public AccessCodeRequirement(string accessCode)
{
AccessCode = accessCode;
}
}
public class AccessCodeHandler : AuthorizationHandler<AccessCodeRequirement>
{
private readonly ApplicationDbContext _context;
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
AccessCodeRequirement requirement)
{
var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier);
var orgID = _context.UsersData.Where(x => x.Id == userId).Select(x => x.OrgID).FirstOrDefault();
var orgAccess = _context.CompanyAccesses.Select(x => x.AccessCode).ToList();
foreach(var a in orgAccess)
{
var access = a;
if(access == requirement.AccessCode)
{
context.Succeed(requirement);
}
}
return Task.CompletedTask;
}
}
내가 추가 한 스타트 업에서
options.AddPolicy("PTW", policy =>
policy.Requirements.Add(new AccessCodeRequirement("RO-01")));
그리고 내가 가지고있는 페이지에서
[Authorize(Policy = "PTW")]
CompanyAccesses 테이블의 OrgID에 대한 AccessCode는 "RO-01"이지만 여전히 액세스가 거부되었습니다. 내가 뭘 잘못 했어?
- 답변 # 1
관련 자료
- aspnet Core 2 Identity에서 면도기 페이지 이름 바꾸기
- c# - DB의 ASPNET Razor Pages 드롭 다운 목록
- wpf - 콘텐츠 컨트롤에서 태그 요소에 액세스하고 데이터 템플릿 내에서 액세스
- 액세스 보고서 텍스트 상자에서 제어 소스 변경
- 면도기 페이지의 Blazor 구성 요소
- Access - 접속하다 - 폼 또는 컨트롤 너비가 업데이트되지 않습니다
- azure active directory - 외부 액세스 홍보 Office 365 그룹 제어
- .net core - Razor Pages는 단위 테스트에서 클래스 속성을 얻습니다
- c# - 동적으로 생성 된 패널의 액세스 제어
- .NET core Razor pages - net 코어 면도기 페이지 - modelstate가 유효하지 않은 경우 입력 요소에 css 클래스 추가
- asp.net - 컨트롤러없이 Razor Pages를 사용하는 경우 ViewModel을 구현하는 방법
- c# - aspnet 코어에서 jquery 파일 업로드에서 보낸 추가 양식 데이터에 액세스하는 방법은 무엇입니까?
- wso2is - 액세스 제어를위한 WSO2 IS의 동적 자원 지원
- asp.net core - Razor Pages 프로젝트를 만들 때 appUseMvc ()가 추가되는 이유는 무엇입니까?
- c# - Custom을 사용하여 ASPNET Core의 현재 HttpContext에 액세스
- angular - 중첩 된 반응성 양식의 그룹 내부에서 제어로부터 부모에 액세스하는 방법
- SAPUI5 애플리케이션에서 내부 페이지에 대한 직접 액세스 제한
- wso2is - 역할을 통과하면 응답으로 세분화 된 액세스 제어 목록을 가져 오는 wso2 Identity Server 57의 API
- c# - 다른 클래스에서 컨트롤 이름에 액세스하는 방법은 무엇입니까?
먼저
_context
당신의AccessCodeHandler
주사에 실패했습니다.AccessCodeHandler
다음과 같이.그런 다음
startup
, 서비스를 추가해야합니다.