我需要在用戶登錄後在一個MVC 4應用程序中強制執行ssl連接。 我在Login操作上使用了[RequireHttps]屬性,但用戶仍然能夠使用http協議如果他手動將協議設置爲http。 如何避免這種情況? 我不希望每次都強制在整個網站上使用SSL,而只是在登錄頁面和用戶登錄時註銷後,他應該使用http協議重定向到主頁在MVC中登錄後強制HTTPS
0
A
回答
0
閱讀您的評論,您最好通過HTTPS發送所有流量,而不是選擇是否應使用HTTPS,具體取決於是否已登錄。
但是,如果你仍然想,儘量延長RequireHttpsAttribute
:
public class RequireUserHttpsAttribute : RequireHttpsAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (!filterContext.HttpContext.Request.IsSecureConnection && filterContext.HttpContext.User.Identity.IsAuthenticated)
{
HandleNonHttpsRequest(filterContext);
}
}
}
你可能會想添加爲一個全球性的過濾器,因此它可以在每次請求運行。如果用戶未登錄,它也不處理HTTP重定向,但添加條件來處理重定向返回HTTP應該很容易。
同樣,您將花更多時間來實現這一點,而不僅僅是將所有流量推送到HTTPS。
我有一種感覺,你有一個登錄控制器,看起來像這樣:
public class LoginController : Controller {
public ActionResult Login() {
// something here
return View();
}
[RequireHttps, HttpPost]
public ActionResult Login(FormCollection form) {
// test login
return RedirectToAction("/");
}
}
注意,原來Login
行動不具有RequireHttps
屬性。試試這個:
[RequireHttps] // put it here to make the entire controller HTTPS
public class LoginController : Controller {
[RequireHttps] // or here
public ActionResult Login() {
// something here
return View();
}
[RequireHttps, HttpPost]
public ActionResult Login(FormCollection form) {
// test login
return RedirectToAction("/");
}
}
但是我會極力鼓勵你爲你的整個應用程序使用HTTPS,如果你能夠的話。在大多數情況下,安全優勢大大超過了非常小的性能影響。
相關問題
- 1. 通過htaccess強制https登錄用戶
- 2. 強制使用HTTPS如果登錄asp.net
- 3. 需要強制http到https,然後強制用戶使用htaccess和apache登錄
- 4. ajax請求後強制登錄
- 5. 在Symfony 2中強制用戶登錄
- 6. 強制https在htaccess中
- 7. 在Django中強制https
- 8. 強制https在index.php
- 9. 使用播放框架強制執行https路由以登錄
- 10. ASP.NET MVC登錄成功後未登錄
- 11. 如何強制登錄sfGuard?
- 12. ZF2 ZfcUser強制登錄
- 13. 強制登錄Wordpress網站
- 14. Backbone.js強制登錄路由
- 15. 強制登錄使用APP
- 16. ipad強制登錄屏幕
- 17. .htaccess強制HTTPS
- 18. Curl https登錄
- 19. 在登錄時CakePHP 3強制註銷
- 20. 強制ASPSessionID在登錄時更改
- 21. 如何在Facebook連接後強制登錄?
- 22. MVC部分登錄控制
- 23. 強制HTTP到HTTPS URL中
- 24. Websphere 6.1中的強制Https
- 25. 強制WWW和HTTPS在.htaccess
- 26. 登錄後獲取https的html
- 27. 切換到HTTPS後無法登錄PHPmyAdmin
- 28. Htmlagilitypack用HttpWebRequest登錄Https網站後?
- 29. 抵制登錄後回去登錄
- 30. 強制HTTPS和WWW
爲什麼你不想在整個網站上強制使用SSL? –
對於 – dot404