• MVC:感觉用户认证标识(IsAuthenticated)有点延时。


    最近在学MVC的用户登录认证,思路如下:用户点击“登录”链接-->路由分析到“用户管理控制器”的登录方法-->返回登录视图弹出登录框-->用户输入帐号密码后登录视图再POST回控制器-->控制器完成登录操作再返回视图-->如果登录成功则关闭登录弹出框层,及刷新页面信息。

    其它步骤都没问题,问题就出在:如何在VIEW中判断是否登录成功?

    于是俺在VIEW中用这一段代码来判断:

    <% if (Request.IsAuthenticated)//如果用户认证成功;
       { %>
    <script type="text/javascript">
        parent.$.closePopupLayer('LoginPopup');//关闭登录弹出框;
        parent.location.reload();//刷新主页;
    </script>
    <% } %>

    但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没多久,很多都是自己的感官认识,如有错误地方,欢迎大家指正。

  • 相关阅读:
    maven安装和四大特性
    rabbitMQ的安装和创建用户
    java小白之面向对象
    java初级笔记
    laravel 的升级
    prepare
    获取客户端真实IP
    apache nginx 区别
    七猫面试
    linux基本命令
  • 原文地址:https://www.cnblogs.com/qisunpeng/p/1854913.html
Copyright © 2020-2023  润新知