J'ai donc une application Web MVC5 (elle est fournie avec le framework ASP.Identity) et j'ai cet attribut personnalisé Authorize
.Comment retourner à l'URL précédente après la connexion? (ajax)
public class FrontEndAuthorize : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
dynamic user = (ClaimsPrincipal)httpContext.User;
if (user.Identity.IsAuthenticated) {
return true;
}
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext context)
{
if (context.HttpContext.Request.IsAjaxRequest()) {
dynamic urlHelper = new UrlHelper(context.RequestContext);
context.HttpContext.Response.TrySkipIisCustomErrors = true;
context.HttpContext.Response.StatusCode = 403;
context.Result = new JsonResult {
Data = new {
Error = "NotAuthorized",
LogOnUrl = urlHelper.Action("LogIn", "Account")
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
} else {
base.HandleUnauthorizedRequest(context);
}
}
}
Et j'ai un problème avec la méthode ajax. Par exemple si j'ai la page articles warheat1990.com/articles/batman-arkham-knight-review
avec un bouton pour soumettre un commentaire.
[HttpPost]
[FrontEndAuthorize]
public ActionResult SubmitComment(string comment)
{
//code here
return Content("success");
}
et moi avons un script pour appeler la méthode lorsque l'utilisateur cliquez sur le bouton Soumettre Commentaire.
$.ajax({
url: '/Articles/SubmitComment/'
type: 'POST'
//rest of code here
})
Lorsque l'utilisateur cliquez sur le bouton Soumettre un commentaire sans connecter, l'utilisateur sera redirigé vers la page de connexion, mais le succès de LOGIN, l'utilisateur est repris à la page d'accueil alias warheat1990.com
au lieu de warheat1990.com/articles/batman-arkham-knight-review
.
Ceci est dû à la méthode SubmitComment
appelée par ajax. Donc, ma question est que dois-je faire pour être en mesure de rediriger l'utilisateur à la page précédente sur l'appel ajax?