필자는 몇 가지 모델을 가지고 있는데, 액션 링크 (새로운, 세부 사항, 편집, 삭제) 및 특정 모델에 대한 특정 아이콘 만 표시하고자합니다. 이러한 아이콘 링크는 사용자가 작업을 수행 할 수있는 권한이있는 경우에만 표시되어야합니다. 권한은 역할에 따라 결정되지만 명시 적으로 필요한 역할은 한 곳에서만 작성됩니다.권한 인식 (아이콘) 모든 모델의 작업 링크 : 어떻게?
아이콘을 표시하고 액션 메소드를 "보호"하기 위해 동일한 논리를 사용하고 싶으므로 Foo
역할을 사용하여 lolcatz를 편집해야하는 경우, 이제이를 Bar
역할로 변경하고 싶습니다. 한 가지만 바꾸면됩니다.
는이를 구현하는 방법에는 여러 가지가있다, 나는 진행 방법에 대한 확실 해요.
나는 결정 권한, 링크, 아이콘, 하나의 액션 텍스트에 대한 책임 ModelAction
클래스를 쓸 수, 나는 부모 클래스와 여러 하강을 쓸 수 있도록 일부 ModelActionsCollection
는 단일 모델에 대한 모든 가능한 조치를 수집 사람.
나의 의심은 :
는 어떻게
?ModelActionsCollection
와 모델을 연결해야SomeStaticClass.GetModelActionsCollection(someModel)
과 같은 해시 또는 정적 클래스를 사용해야하나요? 또는typeof(someModel)
또는"className"
이거나 무엇입니까?방법을 어떻게 장식해야합니까? 다른
[MyAuthorize("action", "model")] public ActionResult action(...)
또는 무엇인가 : 내가 좋아하는 뭔가를 작성해야?
는 괜찮 직접 이러한 클래스 '방법 안에 현재 인증 된 사용자에 액세스 할 수있다, 또는 그들이 매개 변수로 사용자를 받아야한다?
이 클래스가 속한 네임 스페이스는 무엇입니까? 그들은 모델입니까? 도우미? 또는 무엇을?
하고, 마지막으로 : 사람이 이미 재사용 가능한 방법으로이 모든 일을했다?
좋아 그것의 적절한 CSS 클래스와 링크를 구축 우리 자신의 ActionLink 도우미, 그래서? Application_Start에서 직접 컨트롤러 내부에 있습니까? – giorgian
링크가 렌더링 될 때 ActionModelPermission 권한 속성을 가져 오는 동작을 반영합니다. 이는 렌더링 된 HTML에 사용할 링크 및 CSS 클래스에 필요한 권한을 알려줍니다. 그런 다음 ViewData에 캐시 된 현재 사용자 권한을 확인하여 필요한 권한이 부여되었는지 확인합니다. –