2014-03-02 6 views
1

나는 디스플레이로 _LoginPartial.cshtml을 조정하려면 : 아이디 사용자의 역할을 표시하려면 어떻게합니까?

Logged in as <username>(<rolename>) | Logoff 

그래서 내가 로그인 한 사용자와 관련된 첫 번째 역할 이름을 추가하고 싶습니다.

사용자 개체를 통해 액세스 할 수 없으므로이 정보에 어떻게 액세스합니까?

이 현재 코드 :

@Html.ActionLink("Logged in as " + User.Identity.GetUserName(), "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" }) 

답변

1

당신은 Role 클래스를 사용하기를 원하지만거야 정말 당신이 아마 ViewBag에, 그것을 통과하는 컨트롤러 & 함께이 정보를 수집하는 일을해야 . 그렇게하면 사용자 이름이 & 역할을 얻은 곳에서 사용자의 견해가 추출됩니다.

+0

Frankie가 _LoginPartial.cshtml에 역할 이름을 넣는 경우 모든 단일 컨트롤러에서 역할 이름을 가져 와서 ViewBag에 배치해야합니다. 베이스 컨트롤러를 만드는 것이 가장 좋을까요, 아니면 더 좋은 방법이 있습니까? –

+0

기본 컨트롤러가 아마도 최선의 접근 방법 일 것입니다. –

+0

앞서 언급 한 LoginPartial의 로직을 기본 컨트롤러로 이동하고 모든 요청에 ​​대해 ViewBag에 밀어 넣는 대신에 다른 방법은 분리하여 자식 액션 (원하는 경우 자체 컨트롤러에서) 'Html.Partial' 대신에'Html.RenderAction'을 통해 그것을 호출하십시오. 추가 신용을 위해서 이것에 대한 특정 ViewModel을 생성하고 ViewBag를 피할 수도 있습니다. – Funka

0

클레임을 사용하는 경우 사용자를 ClaimsPrincipal으로 다운 캐스트 한 다음 유형 == ClaimsTypes.Role에서 클레임 컬렉션을 필터링 할 수 있습니다.

관련 문제