session驗證用戶是否登錄,MVC:感覺用戶認證標識(IsAuthenticated)有點延時。

 2023-10-08 阅读 14 评论 0

摘要:最近在學MVC的用戶登錄認證,思路如下:用戶點擊“登錄”鏈接-->路由分析到“用戶管理控制器”的登錄方法-->返回登錄視圖彈出登錄框-->用戶輸入帳號密碼后登錄視圖再POST回控制器-->控制器完成登錄操作再返回視圖-->如果登錄成功則關閉登錄彈出框

最近在學MVC的用戶登錄認證,思路如下:用戶點擊“登錄”鏈接-->路由分析到“用戶管理控制器”的登錄方法-->返回登錄視圖彈出登錄框-->用戶輸入帳號密碼后登錄視圖再POST回控制器-->控制器完成登錄操作再返回視圖-->如果登錄成功則關閉登錄彈出框層,及刷新頁面信息。

?

其它步驟都沒問題,問題就出在:如何在VIEW中判斷是否登錄成功?

于是俺在VIEW中用這一段代碼來判斷:

<% if (Request.IsAuthenticated)//如果用戶認證成功;
?? { %>
<script type="text/javascript">
??? parent.$.closePopupLayer('LoginPopup');//關閉登錄彈出框;
??? parent.location.reload();//刷新主頁;
</script>
<% } %>

session驗證用戶是否登錄。但POST后返回View的Request.IsAuthenticated并不是True,要再次輸入帳號密碼post后才返回true,把Request.IsAuthenticated換成Page.User.Identity.IsAuthenticated,問題依然如此。

因此俺認為可能是IsAuthenticated存在延時的問題,于是用來一個替代方案:

1、在Controller處理登錄認證時,增加一個ViewData來識別是否登錄成功,代碼如下:

if (Membership.ValidateUser(userName, password))
?{
?????? FormsAuthentication.SetAuthCookie(userName, persistent);

?????? ViewData["longined"] = "登錄成功";
??????? return View();
? }

2、在View中通過把ViewData["longined"] == "登錄成功"替代IsAuthenticated來識別是否登錄成功,測試通過。

微信用戶的唯一標識。?

本人接觸MVC沒多久,很多都是自己的感官認識,如有錯誤地方,歡迎大家指正。

轉載于:https://www.cnblogs.com/qisunpeng/archive/2010/10/18/1854913.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/133189.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息