2012-05-07 4 views
0

한 사용자를 제외한 모든 사용자가 액세스 할 수있는 작업을 보호하려면 어떻게해야합니까?특정 사용자 만 액세스 할 수 있도록 보장

사용자가 제품을 가지고 있다고 가정 해 보겠습니다. 개발자가 EditProduct 작업을 시작하면 어떻게 다른 사람이 액세스하지 못하게 할 수 있습니까? 과거에는 항상 User.Idenity.Name을 사용하여 사용자 이름과 비교했습니다. 하지만 누군가가 UserName 대신 username으로 로그인하면 동일한 사용자 인 경우에도 대소 문자가 구분됩니다.

모든 수표에서 .ToUpper() 또는 이와 비슷한 것을 사용하면 매우 어설프고 비효율적 인 것처럼 보입니다.

[Authorize(Users = "username")] 

나는 그것이 대소 문자를 구분 경우 완전히 확실하지 않다, 그러나 이것은 행동과 컨트롤러를 보호하기위한 최선의 방법입니다 :

답변

1

는이 같은 조치 위의 권한 부여 속성을 넣을 수 있습니다. 또한 역할과 같은 작업을 수행 할 수 있습니다

[Authorize(Roles = "Administrator")] 
+0

어떤 역할이 아직 모든 사용자가 Users''간주됩니다 설정되어 있지 않은 경우, 또는 디폴트가 없습니다 ? 다시 말해, 사전 설정없이'[Authorize (Users = "username")] 1을 사용할 수 있습니까? – Johannes

+0

Johannes는 Authorize를 사용하여 메소드를 보호하거나 단순히 해당 사용자가 권한을 가지고 있는지 (Creator인지 아니면 다른 방법으로 권한을 부여 받았는지) 감사하는 것이 목적인지 여부는 분명하지 않았습니다. 기본 권한 부여 조치 필터는 (이름 또는 역할을 기준으로) 제외 조치에 대한 조치 만 보호 할 수 있습니다. 제품을 만든 사용자 만 제품을 편집 할 수 있도록하는 것이 목표라면이 방법은 효과가 없습니다. 필요한 경우 사용자 정의 권한 필터를 쓸 수도 있고 데이터베이스에서 데이터를 가져온 후에 자체 확인을 수행 할 수도 있습니다. –

+0

@Johannes [Authorize]는 어떤 역할이나 사용자의 의미로 로그인했음을 감사 할 것입니다. –

1

문자열 같음에 대한 속성이 있습니다

User.Identity.Name.Equals("OtherName",StringComparison.CurrentCultureIgnoreCase) 
관련 문제