2013-02-06 79 views
2

您好我正在使用自定義角色提供程序,並且所有似乎都正常工作,如果用戶有權限,如果他們被允許,如果他們被重定向到登錄頁面。MVC自定義角色提供者重定向到登錄頁面

但是我想知道的是,當他們被重定向到登錄頁面時,登錄頁面中有一種方法可以設置消息說拒絕訪問或什麼。 因此,例如我想要像下面,User.FailedCustomRole?我不知道,如果這樣的事情在一個對象某處:

[AllowAnonymous] 
    public ActionResult Login() 
    { 
     if (User.FailedCustomRole) { 
      ViewBag.Message = "No access to this page"; 
     } 
     return View(); 
    } 

感謝

回答

2
  • 一種方法是改變web.config中用戶重定向到登錄頁面爲1的參數。

改變你的登錄AC和灰採取可空int和如果設置,添加的ModelState錯誤

public ActionResult LogOn(int? id) 
    { 
     //int id = Request.QueryString[; 
     if (id != null) 
     { 
      LogOnModel model = new LogOnModel(); 
      ModelState.AddModelError("", "Please Login to use this page"); 

      return View(model); 
     } 
  • 的第二種方式是創建一個動作過濾器來檢查登錄並重定向設置Viewbag.LoginError

    public class CheckLoginFilterAttribute : ActionFilterAttribute 
    { 
        public override void onactionexecuting(ActionExecutedContext filterContext) 
        { 
           if (Membership.GetUser() != null) 
           { 
          Viewbag.LoginError = "Please Login to use this page"; 
          filterContext.Result = new RedirectToRouteResult(
        new System.Web.Routing.RouteValueDictionary { 
         {"controller", "Account"}, {"action", "Logon"} 
           } 
         { 
    
         } 
        base.OnActionExecuted(filterContext); 
    } 
    

    添加到您的登錄頁面顯示@(Viewbag.LoginError)的div。如果未填充,這將呈現空白。

  • 的第三種方法是創建一個自定義的授權過濾器,重定向,並在V @設置錯誤消息(計算機[「LoginError」。

添加到您的登錄頁面的div節目@(ViewData["LoginError"],這將使空白,如果無人居住。

我至少某些或舒服這最後的方法。

+0

非常感謝你 – user1434177

+0

@ user1434177,祝你好運! –

相關問題