1

Request.IsAuthenticated が常に false を返すという問題があります。AuthCookie を設定しています

 CurrentRequest currentRequest = null;

            if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                return Redirect(returnUrl);
            } else if (login.ValidateUser(acct.UserName, acct.Password))
            {
FormsAuthentication.SetAuthCookie(acct.UserName, true); //Edit on 11/12 @11:08
                currentRequest = new CurrentRequest();
                SessionWrapper.currentRequest = currentRequest;
                return RedirectToAction("About", "Home");
            }

//これは、ログインまたはログオフを表示することになっている部分的なログイン ページです。

@using KMSS.Helper;

//これは常に false です

    @if (Request.IsAuthenticated) //Same issue with User.Identity.IsAuthenticated
    {
        if (SessionWrapper.currentRequest != null)
        {
            <text> Welcome <strong> @SessionWrapper.currentRequest.Username </strong>
                [@Html.ActionLink("Sign Off", "Logoff", "Account")]
            </text>
        } else {
           @: [ @Html.ActionLink("Sign In", "Login", "Account") ]
        }
    } else
    {

       @:[ @Html.ActionLink("Sign In", "Login", "Account") ]
  }

オンラインで読んだ後、ブール値を持つクラスを作成し、代わりにそのクラスを使用しようとしました。ただし、オブジェクトが新しい変数例外のインスタンスに設定されていません。設定方法は次のとおりです。 //部分ログインページ

@model KMSS.Helper.ViewModelAuthenticate;

//これは常に false です

    @if (Model.IsAuthenticated) 
//The model is null even though I create create a reference in the Login Method i.e.     
(ViewModelAuthenticate auth = new ViewModelAuthenticate();
    {
        if (SessionWrapper.currentRequest != null)
        {
            <text> Welcome <strong> @SessionWrapper.currentRequest.Username </strong>
                [@Html.ActionLink("Sign Off", "Logoff", "Account")]
            </text>
        } else {
           @: [ @Html.ActionLink("Sign In", "Login", "Account") ]
        }
    } else
    {

       @:[ @Html.ActionLink("Sign In", "Login", "Account") ]
  }

//ここにクラス public class ViewModelAuthenticate { public bool IsAuthenticate { get; 設定; } }

//ここで、コントローラーでクラスを初期化しています

 public ActionResult Login()
        {
           ViewModelAuthenticate auth = new ViewModelAuthenticate();
            auth.IsAuthenticate = false;
            return View();
        }

//ログインの内外でこれを試しましたが、部分的なログイン ビューの前に呼び出されます。ただし、オブジェクトが新しい変数例外のインスタンスに設定されていません。ここで何が間違っていますか?あなたの助けに感謝します。

//Showing the authentication section of the config file.

 <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" slidingExpiration="true" />
    </authentication>
4

3 に答える 3

0

私はテストをしていて、時間を数日戻しました。何らかの理由で、日付を戻した後にこの問題が発生しましたが、問題ありませんでした。Windowsフォームには古い日付(今日の日付)がキャッシュされていたため、期限切れになったと思います。問題についてのちょっとした考え。

于 2015-03-10T11:54:43.637 に答える