ngが-含ま: ログインページ使用している間、私はセッションと認証タイムアウトの次のコードを使用してい
public class AuthCheckService : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (HttpContext.Current.Session.Count == 0 || HttpContext.Current.Session["NovellID"] == null || HttpContext.Current.Session["UserRole"] == null)
{
if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
{
//Ajax request doesn't return to login page, it just returns 403 error.
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 501;
throw new ModelStateException("Your Session has expired- Please login again!");
}
else
{
//base.HandleUnauthorizedRequest(filterContext);
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Login", controller = "Account" }));
}
}
else if (filterContext.HttpContext.Request.IsAuthenticated)
{
// Otherwise the reason we got here was because the user didn't have access rights to the
// operation, and a 403 should be returned.
filterContext.Result = new HttpStatusCodeResult(403);
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
public class SessionCheckService : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session.Count == 0 || HttpContext.Current.Session["NovellID"] == null || HttpContext.Current.Session["UserRole"] == null)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 501;
throw new ModelStateException("Your Session has expired- Please login again!");
}
else
{
// HttpContext.Current.Response.Redirect(Helper.SiteURL + "Account/Login");
//filterContext.Result = new RedirectResult(Helper.SiteURL + "Account/Login");
// return;
//base.OnActionExecuting(filterContext);
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Login", controller = "Account" }));
}
}
base.OnActionExecuting(filterContext);
}
}
が、セッションの
は、私は次のような画面を取得しています有効期限が切れます。私は角使用しています。セッションを期限切れにしてからOpen Edit Overdue Tasksをクリックすると、上記の画面が表示されます。
HTML:
<div ng-app="myApp">
<div ng-controller="AdminController">
<div class="container">
@Html.AntiForgeryToken()
<section class="full-length mtop10">
<div class="ui-tabs ui-widget ui-widget-content">
<div class="area-top clearfix" id="TaskListButtons">
<div class="return-pop-btn1">
<input type="button" value="Edit Overdue Tasks" class="btn-primary i-editoverdue" ng-click="OpenEditOverdueTasks()" id="EditOverdueTasks">
</div>
</div>
<div class="clearFix"></div>
</section>
</div>
<div id="popupView" ng-include="template.url">
</div>
</div>
</div>
JS:
(function() {
//var myApp = angular.module("AdminModule", ['ui.grid', 'ui.grid.pagination', 'ui.grid.selection', 'ui.grid.edit']);
var app = angular.module('myApp');
app.controller('AdminController', ['$scope', 'uiGridConstants', function ($scope, uiGridConstants) {
$scope.templates = [
{ name: 'TaskForm', url: 'Template/taskform' },
{ name: 'taskassignment', url: 'Template/taskassignment' },
{ name: 'export', url: 'Template/export' },
{ name: 'blank', url: 'Template/blank' },
{ name: 'maintenanceplan', url: 'Template/maintenanceplandetails' },
{ name: 'editoverduetasks', url: 'Template/editoverduetasks' },
];
$scope.OpenEditOverdueTasks = function() {
showProgress();
$scope.template = $scope.templates[5];
window.setTimeout(function() {
//localStorage.removeItem('hdnIsEditOverDue');
if($('#EditOverDuePopup').length == 1)
{
$('#EditOverDuePopup').css('display', 'block');
$('#exposeMaskEditOverDue').css('display', 'block');
//hideProgress();
}
else
{
window.setTimeout(function() {
$('#EditOverDuePopup').css('display', 'block');
$('#exposeMaskEditOverDue').css('display', 'block');
//hideProgress();
}, 4000);
}
}, 5000);
};
}]);
})();
間違ったつもりされた場合、私に知らせてください。
[セッションの有効期限が切れるとログインページへの部分的な表示をリダイレクトする]の可能な複製(http://stackoverflow.com/questions/38475165/redirect-partial-view-to-login-page-when-session-expires) – User3250
ここに私はAjaxセッションのタイムアウトのために従っています。http://www.adambielecki.com/2014/04/prevent-displaying-log-in-page-in.html – Anil