2017-06-27 7 views
0

私の質問に失敗しました:ユーザーがマネージャーの役​​割と管理役割を持っていない場合はは、MVC

  1. が、私はページ/いくつかのポップアップメッセージをエラーにリダイレクトする必要があります。しかし、私は "false"を継続的にWindowsセキュリティのパスワードウィンドウを表示することを確認したときに表示。ユーザー名とパスワードを再度入力すると、Windowsのセキュリティパスワードが表示されます。

  2. 私が確認しなければならないすべての操作方法とメッセージまたはエラーページを表示する必要があります。どのようにこの問題を解決するには?

コントローラコード:

[AuthorizeUser("Manager","Admin")] 
public ActionResult Contact() 
{ 
    return View();  
} 

C#コード:

public AuthorizeUserAttribute(params int[] roles) 
{ 
    allowedroles = roles; 
} 

protected override bool AuthorizeCore(HttpContextBase httpContext) 
{ 
    bool authorize = false; 
    var getList = _objService.GetUserRoleDetail(CommonStaticHelper.getLoggedUser()); 

    foreach (var role in allowedroles) 
    { 
     if (getList.Exists(m => m.RoleId == role)) 
     { 
      return authorize = true; /* return true if Entity has current user(active) with specific role */ 
     } 
    } 
    return authorize; 
} 

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    filterContext.Result = new HttpUnauthorizedResult(); 
} 

答えて

2

///これを試してみてください:

///Create an action : 

     public ActionResult Unauthorized() 
       { 
        return View(); 
       }  
//// now write below code for authorization   


    protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext) 
       { 

        if (filterContext.HttpContext.Request.IsAuthenticated) 
        { 
         //redirect to the Unauthenticated page 
         filterContext.Result = new RedirectToRouteResult(new 
RouteValueDictionary(new { controller = "Error", action = "Unauthorized" 
})); 
        } 
        else 
        { 
         base.HandleUnauthorizedRequest(filterContext); 
        } 
       } 



       protected override bool AuthorizeCore(HttpContextBase httpContext) 
       { 
        var authorized = base.AuthorizeCore(httpContext); 


        if (!authorized) 
        { 
         // The user is not authenticated 
         return false; 
        } 
        else{ 
     var getList = 
     _objService.GetUserRoleDetail(CommonStaticHelper.getLoggedUser()); 

      foreach (var role in allowedroles) 
      { 
       if (getList.Exists(m => m.RoleId == role)) 
       { 
        return authorize = true; /* return true if Entity has current 
        user(active) with specific role */ 
       } 
      } 

       return authorize = false; 

       } 
+0

その作業を、そのフィルタを呼び出します。 – SENA

0

は..感謝を

public class AuthorityAttribute : AuthorizeAttribute 
    { 
     private readonly string[] allowedroles; 
     public AuthorityAttribute(params string[] roles) 
     { 
      this.allowedroles = roles; 
     } 
     protected override bool AuthorizeCore(HttpContextBase httpContext) 
     { 
      foreach (var role in allowedroles) 
      { 
       if (PortalWebSessionManager.ActivePortalSettings.ActiveRoles != null) 
       { 
        foreach (IDynamics.IDynamicsPortal.DataComponent.Roles currentRole in PortalWebSessionManager.ActivePortalSettings.ActiveRoles) 
        { 
         if (currentRole.RoleName == role) 
         { 
          return true; 
         } 
        } 
       } 
      } 
      return false; 
     } 
     protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
     { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 

のような独自のフィルター何かを作成し、

+0

私にお試しください。ありがとうございました – SENA