0

そのため、JSONの結果を返すajaxメソッドを取得しましたが、メソッドの一部は、セッションが有効かどうかを確認することです。

したがって、ユーザーがページを更新すると、ajaxメソッドが呼び出され、セッションの有効期限が切れると例外がスローされます。このメソッドはJSONの結果を返したいのですが、代わりにログインページにリダイレクトします。

どうすればこれを行うことができますか?

public JsonResult GetClients()
{
var usertoken = new UserToken(this.User.Identity.Name);
if (usertoken.AccountId != null)
{
return new JsonResult() {Data = model, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
}
else
{
 //Redirect Here
}
4

2 に答える 2

1

AFAIKでは、呼び出しがajaxを使用しているため、JavaScriptを介してのみこれを行うことができます。リダイレクトヘッダーは、ajaxリクエストに対して受け入れられないため、他の投稿に対するソリューションは機能しません。

ステータスまたはhasExpireプロパティを戻り結果に追加することをお勧めします。

[HttpPost]
public ActionResult GetClients()
{
var usertoken = new UserToken(this.User.Identity.Name);
if (usertoken.AccountId != null)
{
return Json(new { data = model, status = true });
}
else
{
  return Json(new { data = null, status = false });
}

あなたのajax呼び出しで:

$.ajax('/controller/getclients', { }, function(data) {
  if(data.status == true) {
    // same as before you've got your model in data.data...
  } else {
    document.location.href = '/account/login';
  }
});

お役に立てば幸いです。

于 2012-11-15T21:50:37.787 に答える
0

コントローラー コードで、セッションの有効性を確認します。例えば

        if (Session["UserName"] == null)
        {
            return Json(new
            {
                redirectUrl = ConfigurationManager.AppSettings["logOffUrl"].ToString(),
                isTimeout = true
            });
        }

.js ファイルでは、次のようにチェックします

    success: function (data) {
        if (data != '' && typeof data != 'undefined') {
            if (data.isTimeout) {
                window.location.href = data.redirectUrl;
                return;
            }
于 2013-04-09T12:55:22.400 に答える