我的網站對所有人開放,但我有一個只有管理員用戶名和密碼才能進入的方法的控制器。我將bool IsManager
保存在session
中。
我想使用授權屬性來阻止誰有IsManager == false
。mvc 3 session and authorizeAttribute
4
A
回答
7
首先定義一個ActionFilter
:
public class TheFilter: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var session = filterContext.HttpContext.Session;
if ((bool?)session["IsManager"] == true)
return;
//Redirect him to somewhere.
var redirectTarget = new RouteValueDictionary
{{"action", "{ActionName}"}, {"controller", "{ControllerName}"}};
filterContext.Result = new RedirectToRouteResult(redirectTarget);
}
}
然後用它被限制的動作(或控制)以上:
//[TheFilter]
public class ManagersController : Controller
{
[TheFilter]
public ActionResult Foo()
{
...
return View();
}
}
1
要使用ASP.NET安全牢記這行你應該將IsManager角色添加到您的成員資格/角色系統,然後將該用戶添加到該角色。此時不需要黑客入侵,您可以使用內置的Authorize屬性。
您是否使用內置的會員供應商?如果是這樣,這將是一個快照。
+0
現在我不使用任何像會員提供商。我的網站是公開旁邊的一小部分,這是一個經理只有控制器,我想限制訪問... – 2012-03-21 22:01:52
+0
然後,您可以簡單地在Application_AuthenticateRequest上創建原型,並在其中填充角色,以便您可以使用Authorize屬性。這樣,如果您移動到成員系統,則不需要更改任何屬性在自定義屬性的情況下) – 2012-03-22 03:26:06
相關問題
- 1. ASP.NET MVC 3 AuthorizeAttribute
- 2. ASP.NET MVC 3 Session
- 3. AuthorizeAttribute和輸出緩存在asp.net mvc 3
- 4. asp.net MVC 3將AuthorizeAttribute應用到區域
- 5. Session and Page.IsPostBack
- 6. 前MVC AuthorizeAttribute
- 7. 如何擴展ASP.NET MVC AuthorizeAttribute
- 8. ASP.Net MVC安全AuthorizeAttribute
- 9. ASP.NET MVC JsonResult和AuthorizeAttribute
- 10. 在Asp.Net MVC 3中,AuthorizeAttribute的身份驗證用戶是什麼?
- 11. AuthorizeAttribute在WCF爲MVC的
- 12. 覆蓋MVC中的AuthorizeAttribute 4
- 13. ASP .NET MVC 4 AuthorizeAttribute和ActiveDirectoryMembershipProvider
- 14. Slim Framework 3 session
- 15. 在MVC中的AuthorizeAttribute中獲取模型數據3
- 16. MVC 3 AuthorizeAttribute使用自定義消息重定向
- 17. asp.net mvc session
- 18. ASP.Net MVC Nhibernate Session
- 19. ASP.NET MVC Session
- 20. asp.net mvc session example
- 21. Asp.Net MVC和Session
- 22. 會話在MVC中變爲null AuthorizeAttribute
- 23. MVC ModelState and Collections
- 24. ASP.NET MVC 5和Session
- 25. Asp.Net mvc Session Vs Cache
- 26. ASP.NET MVC 3 RedirectToRouteResult
- 27. WYSIHAT and rails 3
- 28. SubSonic 3 and inlinequery
- 29. Backbone and spring mvc
- 30. 如何在asp.net mvc中模擬AuthorizeAttribute?
安全過濾器應該實現IAuthorizationFilter - 它在操作過濾器之前運行。您正在使用動作過濾器開啓安全漏洞購買。請參閱我的MSDN關於過濾器的文章http://msdn.microsoft.com/en-us/library/gg416513(VS.98).aspx最好覆蓋管理控制器的OnAuthorization過濾器。 – RickAndMSFT 2012-03-21 22:55:46
@ Rick.Anderson-at-Microsoft.com我相信它的情況以及驗證過濾器,您需要格外小心,因此您也不會遇到緩存問題,併爲其他用戶返回內容,否? – 2012-03-22 03:27:56
@ Rick.Anderson-at-Microsoft.com。我閱讀你的文章。看不到任何我打開的安全漏洞,你能舉個例子嗎? – gdoron 2012-03-22 10:13:29