我的應用程序(MVC4/C#)使用SimpleMembershipProvider,通常工作正常。但是,我有一個問題,經過數小時的研究和測試後,我無法解決。經過身份驗證的用戶被重定向到登錄
如果我離開我的應用程序一段時間(比如30分鐘),然後選擇一個菜單項,頁面呈現(側欄/頁眉/頁腳),但@RenderBody部分重定向到〜/帳戶/登錄操作。
如果我然後忽略登錄並單擊任何控制器操作鏈接(從菜單),然後按預期加載。看起來,剃刀布局視圖正確認爲我是經過身份驗證的,但控制器認爲我沒有被授權。我有一個基本類,用於我繼承的大部分控制器都具有[Authorize]屬性。
如果我註銷,只有RenderBody部分呈現預期的〜/帳戶/登錄操作。
從web.config中
<system.web>
<roleManager enabled="true" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
基地控制器
[Authorize]
public abstract class AuthorizeBaseController : Controller
{
}
控制器
public class SiteController : AuthorizeBaseController
{
private SiteContext db = new SiteContext();
public ActionResult Index()
{
return View(db.Sites.ToList());
}
:
_Layout.cshtml
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Styles.Render("~/Content/menubar.css")
</head>
<body>
@if (Request.IsAuthenticated)
{
<div id="header">
:
</div>
<div id="sidebar">
:
</div> <!-- sidebar -->
}
<div id="body">
@RenderBody()
</div>
@if (Request.IsAuthenticated)
{
<footer>
:
</footer>
}
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
看起來是相關[這個問題](http://stackoverflow.com/questions/12257232/role-based-authentication -in-new-mvc-4-internet-template-using-simplemembers) – tr3v