0

クッキーにアクセスしてユーザーとパスワードを取得し、ログインビューのテキストボックスに設定する必要があります。 "ログインに成功した後のセッションとクッキーのC#MVC 5フォーム認証がサインアウトするとチケットクッキーが消去されます

ログオフの方法

public ActionResult LogOff() 
{ 
    //Session.Abandon(); 
    // sign out. 
    FormsAuthentication.SignOut(); 
    return RedirectToAction("Index", "Login"); 
} 

初期化。ログインビュー 私は私が最初にログアウトしてからクッキーにアクセスしようとする問題を抱えているが、私は実行するので、それはnullを返しますの

private void InitializeSessionVariables(AgentDTO user) 
{ 
    // SessionModel.AgentId = user.ID; 
    Response.Cookies.Clear(); 
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,user.MobilePhone,DateTime.Now,DateTime.Now.AddDays(30),true,"",FormsAuthentication.FormsCookiePath); 
    // Encrypt the ticket. 
    string encryptedTicket = FormsAuthentication.Encrypt(ticket); 
    // Create the cookie. 
    HttpCookie authenticationCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); // Name of auth cookie (it's the name specified in web.config) // Hashed ticket 
    authenticationCookie.Expires = DateTime.Now.AddDays(365); 
    // Add the cookie to the list for outbound response 
    Response.Cookies.Add(authenticationCookie); 
} 

アクション結果「FormsAuthentication.SignOut();」彼は上をクリックミーの文書readyイベントに値

とログインページ上に設定するためのチェックボックス

使用

localStorage.setItem("UserName", "Smith"); 

を覚えている場合は、ストアのユーザー情報にはJavaScriptを使用することができます

public ActionResult Index(LogonDTO model, string message = null, string reason = null) 
{ 
    if (SessionModel.AgentMobilePhone != null) return RedirectToAction("Index", "Home"); 
    if (reason != null) message = "Su sessión ha expirado. Vuelva a loguearse."; 
    ViewBag.Message = message; 

    if (Request.Cookies[FormsAuthentication.FormsCookieName] != null) 
    { 
     HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
     FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
     model.Username = authTicket.Name; 
     //model.Password = "in progress..." 
    } 
    return View(model); 
} 
+0

https://support.microsoft.com/en-us/help/910443/understanding-the-forms-authentication-ticket-and-cookie、 'FormsAuthentication.SignOut();'が削除されます。いずれの場合もクッキー私は、永続的なクッキーの場合は、 'FormsAuthentication.SignOut();'を全く呼び出さないと仮定します。 – Patrick

+0

そうですね、私の場合はクッキーを決してすべきではありませんか? – Necroimix

+0

私は 'FormsAuthentication.SignOut();'は、ユーザがまだチケット/クッキーを持っていてもあなたのサーバにオープンセッションがない場合にのみ使用すべきだと思います。これにより、ユーザーのブラウザからチケットが削除され、再度「ログイン」する必要があります。 – Patrick

答えて

0

Jqueryコードの下に書く

var UserName = localStorage.getItem("UserName"); 
if (UserName) $("#username").val(UserName); 

これで問題が解決されることを願っています。

+0

localstorageではパスワードを保存できません。 – Necroimix

+0

SessionIDを使用してサーバー側にパスワードを格納します。セッションIDを持つリクエストをサーバに送信して、そのユーザに対して格納されたユーザ情報を取得し、ユーザにログインさせることができます。 –

+0

セッションに保管することはお勧めしません。今日または明日にアプリケーションを入力するときは、[Remember me]チェックボックスがオンの場合、テキストボックスにユーザーとパスワードを入力する必要があるため、必ずクッキーに入れてください。翌日にアプリケーションを開くか、アプリケーションを閉じるとセッションが終了します。 – Necroimix

関連する問題