Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 成功登录后显示注销按钮_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 成功登录后显示注销按钮

Asp.net mvc 3 成功登录后显示注销按钮,asp.net-mvc-3,Asp.net Mvc 3,我使用的是mvc3应用程序,在点击登录按钮后,我检查用户是否在jquery中使用ajax调用进行了验证。若用户经过身份验证,那个么我将返回true,并在Onsuccess方法中将其重定向到主页。代码如下: 函数成功(响应){ var mesg=$(“#lblMess”)[0]; 开关(响应){ 大小写正确: var url=“/Home/Search”; takeToHomePage(url); $(location.attr('href',url); 打破 案例错误: mesg.style.

我使用的是mvc3应用程序,在点击登录按钮后,我检查用户是否在jquery中使用ajax调用进行了验证。若用户经过身份验证,那个么我将返回true,并在Onsuccess方法中将其重定向到主页。代码如下:

函数成功(响应){
var mesg=$(“#lblMess”)[0];
开关(响应){
大小写正确:
var url=“/Home/Search”;
takeToHomePage(url);
$(location.attr('href',url);
打破
案例错误:
mesg.style.color=“红色”;
mesg.innerHTML=“电子邮件id或密码不正确”;
打破
案例“错误”:
mesg.style.color=“红色”;
mesg.innerHTML=“发生错误”;
打破
}
}
现在,我在我制作的_layout.cshtml页面中添加了一个注销按钮 在登录页面中没有可见性,所以如果我之前显示此注销按钮 开关启动,用户无效,然后显示“注销”按钮,但 如果用户经过身份验证并试图在内部显示“注销”按钮,则为true 那么它就不起作用了

对服务器进行Ajax调用,检查用户是否经过身份验证。然后可以切换“显示”和“隐藏”按钮<代码>这不是最好的方法。但谈论好的方法是通过继承ICustomPrincipal创建一个自定义CustomPrincipal,并且可能会有更多的更改。如果你刚刚开始使用MVC,我认为这对你来说太多了

此解决方案仅用于切换“注销”按钮的可见性,我不建议将此作为最佳做法

 $.get("User/CheckUserAuthenticity",function(response){
     if(response == "true")
      {
        //button show;
      }
  });
您的控制器操作可以是

    public ActionResult CheckUserAuthenticity()
    {
      return Json(User.Identity.IsAuthenticated,JsonRequestBehavior.AllowGet);
    }

如果目的是重定向,为什么要使用ajax。这是毫无意义的。只需执行正常的提交和重定向。您是否使用表单身份验证?是的,Reddy,这是表单身份验证。最后添加的消息是,如果用户通过身份验证,则在真实情况下,我尝试隐藏登录按钮和显示签出按钮,但没有发生,它仍然仅显示登录按钮。登录按钮id=$(“#登录”).css(“display”,“none”);SignOut按钮id=$(“#SignOut”).css(“display”,“block”);这工作正常我在启动true和false case之前使用此代码(仅限开关内部)但是,当我在true case中使用此代码时,它不起作用。您是否使用了我上面建议的代码?如果您可以使用当前代码和问题更新您的问题也会更好。您建议的代码不是仅由您评论的最佳实践,第二件事是何时调用它?