많은 SO 및 다른 페이지를 검색했지만 비슷한 사례를 찾을 수 없습니다.ASP.NET MVC4 인증 성공이지만 프로젝트 빌드 후 역할이 누락되었습니다.
내 응용 프로그램이 SimpleMembership을 사용 중입니다. 역할 기반 사용자 메뉴가 있으며 대부분의 작업은 [Authorize (Roles = "aaa, bbb")] 특성과 함께 수행됩니다.
응용 프로그램을 빌드하거나 일정 시간 이상 브라우저를 유휴 상태로두면 사용자는 클릭 한 모든 링크에서 로그인 페이지로 리디렉션됩니다. 이상한 것은 로그인 이름이 여전히 표시 될 수 있지만 역할 이름이 첨부되지 않은 것입니다.
사용자는 위와 같은 상황에서 [Authorize] 속성을 사용하여 작업에 액세스 할 수 있습니다. 내가 누락 된 것이 있는지 궁금하거나 인증이 유효한 한 역할 정보를 활성 상태로 유지할 수 있습니까?
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")]'액션에 액세스 할 때 로그인 페이지로 리디렉션됩니다. '[Authorize]'액션에서는 발생하지 않습니다 (사용자는 빌드 후에 액세스 할 수 있습니다). 내 관찰에서 사용자는 빌드 후에도 로그인되지만 역할은 누락됩니다. 데이터베이스 연결 시간 초과 문제입니까? action 속성을 실행할 때 역할을 유지할 수있는 방법이 있는지 궁금합니다. 감사합니다 – horizon1711
내 업데이트 된 답변을 참조하십시오. –
역할을 상실한 유휴 상태를 시뮬레이트하기위한 응용 프로그램을 만들려고했습니다. 이제는 "역할의 상실이지만 인증 된"IIS 응용 프로그램 풀의 유휴 시간 제한이 해결되었습니다. 연장 된 시간 초과 및 잘 작동합니다. 당신의 도움을 주셔서 감사합니다. – horizon1711