我已經搜索了很多SO和其他頁面,但仍找不到類似的案例。ASP.NET MVC4身份驗證成功,但在項目構建後缺少角色
我的應用程序使用SimpleMembership。它具有基於角色的用戶菜單,並且大多數操作都與[Authorize(Roles =「aaa,bbb」)]]屬性一致。
在應用程序構建或瀏覽器空閒一段時間後,用戶將被重定向到任何鏈接點擊的登錄頁面。奇怪的是,登錄名仍然有效顯示,但沒有它附加的角色名稱。
用戶可以在上述情況下使用[授權]屬性訪問操作。我想知道是否有我缺少的任何東西,或者只要身份驗證有效,我就可以保持角色信息的活躍?
這裏是從控制器動作代碼來渲染菜單:
public ActionResult Menu() { if (Roles.IsUserInRole("Admin")) { return View("MenuAdmin"); } if (Roles.IsUserInRole("Advising")) { return View("MenuAdvising"); } if (Roles.IsUserInRole("StudentDevelopment")) { return View("MenuStudentDevelopment"); }...
定製_logonPartial顯示登錄名和角色
> @if (Request.IsAuthenticated) {
<text>
Logged in: @Html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "Manage" }) as
@String.Join(",", Roles.GetRolesForUser(User.Identity.Name))
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) {
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}
</text>
感謝您的回答。情況是:在每次構建之後,當訪問'[Authorize(Roles =「XXX,BBB」)]'actions時,用戶將被重定向到登錄頁面。它不會在'[Authorize]'操作中發生(用戶可以在構建之後訪問)。從我的觀察來看,用戶在構建後仍然登錄,但角色不見了。它是一個數據庫連接超時問題?我想知道在執行action屬性時是否有任何可能的方式來保持角色。謝謝 – horizon1711
請看我更新的答案。 –
我試圖構建旨在模擬失去角色的閒置情況的應用程序。現在解決了「失去角色但經過身份驗證」是IIS應用程序池的空閒超時。延長超時時間,它工作正常。謝謝你的幫助。 – horizon1711