簡體   English   中英

ASP.NET MVC4重定向到登錄頁面

[英]ASP.NET MVC4 Redirect to login page

我正在使用ASP.NET MVC 4和C#創建一個Web應用程序。

我想在使用應用程序之前登錄所有用戶。

我正在使用ASP.NET Membership與自定義數據庫。

一種方法是檢查Membership.GetUser()在每個函數中是否為null。

但是,沒有比在每個函數中檢查用戶登錄狀態更簡單的方法嗎? (也許檢查web.config,global.asax等...... ??)

當然,使用[Authorize]裝飾你的動作或整個班級,它將要求用戶首先登錄。

[Authorize]放在您希望僅登錄用戶訪問的每個操作上。 您也可以在控制器級別執行此操作,使控制器內的所有操作都受到保護。 后者可能最適合您,因為您可能只希望為訪客禁用所有頁面。

這是類級別的樣子:

[Authorize]
public class SomethingController
{
    //...
}

這是一個行動級別的:

public class SomethingController
{
    [Authorize]
    public ActionResult SomeAction(Parameter someParameter)
    {
        //...   
    }
}

另一種方法是,如果您的所有或大部分頁面都使用相同的母版頁,則放置:

<script type="text/javascript>
    @if(!Request.IsAuthenticated) {
        window.location.href = redirectURL;
    }
</script>

或者如果你不使用剃刀語法,

<script type="text/javascript>  
    <% if(!Request.IsAuthenticated) { %>
        window.location.href = redirectURL;
    <% } %>
</script>

在母版頁中。 這樣,如果用戶未登錄,則使用該母版頁的所有頁面都將重定向到其他位置。但這僅適用於您使用內置身份驗證的情況。 注意:此選項遠不如第一個選項安全。 僅在站點安全性不是一個大問題時才使用此選項

您可以編寫自定義[Authorize]屬性。 然后簡單地用它來裝飾控制器/動作,或者如果所有動作都需要授權,你可以將它注冊為全局動作過濾器。

您可以將[Authorize]屬性放在控制器上或控制器中的單個方法中,這樣您就可以選擇誰可以打開操作以及具有哪些權限。 您還可以使用以下角色進行授權: [Authorize(Roles="Admin")] ,您只能授權管理員角色的用戶訪問您的操作/控制器。 例如:

[Authorize(Roles="SimpleUser")] or with no roles [Authorize]
public ActionResult Index()
{
    return View();
}

[Authorize]
[HttpPost]
public ActionResult Index(FormCollection form)
{
    ... whatever logic
    return View();
}

希望這可以幫助 ;]

我知道這個問題已經有了答案,但如果打算鎖定整個應用程序,除了少數幾個控制器操作,那么我覺得這是一個更好的解決方案......

在你的應用程序的啟動/初始化添加...

httpConfig.filters.Add(new AuthorizeAttribute());

...然后在行動你不想來保護...

[AllowAnonymous]
public ActionResult Hello() { return View(); }

在班級使用[授權]

如果您想允許匿名訪問某些操作,請使用[AllowAnonymous]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM