2016-07-25 15 views
1

Windows認証を使用してユーザーを認証するMVC 5 Webアプリケーションがあります。私の目標は、Windows Authenticatied usernameに基づいてカスタムロールを実装することです。私はこれを説明しているatriclesを見たことがありますが、Windowsのautneticationではなく、ユーザーの役割に基づいてアプリケーションを構築しています。Windows認証された資格情報に基づいたMVCカスタムロール

私の問題は、Windows認証されたアカウントに基づいてカスタムロールを追加するにはどうすればいいですか?

+0

あなたがたDirectorySearcherを使用してみましたオブジェクトのユーザーのグループを照会するには? – wertzui

+0

@wertzui - 私はDirectorySeearcherオブジェクトを使用しようとしませんでしたが、それは私が探しているものではないように思えます。私は他のどこにも見つからない私自身のカスタムロール/グループを作成したいと思っています。ロール/グループは私自身のデータベースにあります – GRU119

答えて

0

アクセスを検証するために、制限されたコントローラにカスタムフィルタを追加するための一つのアプローチID:カスタムフィルタ内部

[HasPermission(EnumSecuredFunctionality.ACCOUNTS)] 
public class Account : Controller 
{ 

} 

はあなたの権限を扱うことができます。

public class HasPermission : ActionFilterAttribute 
{ 
    public EnumSecuredFunctionality[] Actions { get; set; } 

    public HasPermission(params EnumSecuredFunctionality[] actions) //For example you can pass secured functionalities to restrict 
    { 
     Actions = actions; 
    } 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     BaseController controller = (BaseController)filterContext.Controller; 

     UserAuthData userAuthData = (UserAuthData)controller.ViewBag.UserAuthData; 

     if (!controller.UserIsAuthenticated || !controller.ValidatePermission(userAuthData.ShopSeller.LoginName.ToString(), Actions[0])) 
     { 
      //REDIRECT 
      RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary(); 
      redirectTargetDictionary.Add("action", "ShowMessage"); 
      redirectTargetDictionary.Add("controller", "Error"); 
      redirectTargetDictionary.Add("message", "Role " + EnumToString.EnumRoleToString(userAuthData.ShopSeller.EnumRole) + " No permissions"); 

      filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary); 
     } 
    } 
} 
関連する問題