[英]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.