当运行MVC 4应用程序时,首先进入登录页面,使用Windows身份验证。

15 浏览
0 Comments

当运行MVC 4应用程序时,首先进入登录页面,使用Windows身份验证。

我目前正在开发一个项目,使用Windows身份验证来授权用户并设置他们的特定权限。然而,每次运行程序进行测试时,由Visual Studio在创建项目时创建的默认登录页面(/Account/Login)总是首先出现,而不是转到Home/Index。当我启动它时,URL通常是http://localhost:50848/Account/Login?ReturnUrl=%2fViews%2fHome%2fIndex.cshtml,而不仅仅是http://localhost:50848。我还应该注意到,程序在屏幕上获取了正确的Windows身份验证,所以我知道这部分是有效的。

在我的设置中是否有什么可以改变以阻止这个额外的登录界面弹出的?我正在使用Visual Studio 2012,IIS Express和MVC 4。相关代码:

Web.config

    
        
        
        
        
        
        
        
      

    
    
    
      
      
          
      
    
      
        
        
        
        
        
        
        
      
    
  

    
    
      
      
      
      
      
      
    
  

IIS Express applicationhost.config

   
            
            
            
            
            
            
            
                
                    
                    
                
            
        

是的,我已经将Windows身份验证更改为'enabled',将匿名身份验证更改为'disabled'。

0
0 Comments

在运行MVC 4应用程序时,首先进入登录页面使用Windows身份验证的原因可能是因为存在FormsAuthentication模块。解决方法是移除该模块,代码如下:


  
    
  

此后,将不再重定向到默认页面。

另外,如果不使用SimpleMembership,请在Account控制器中删除所有与会员资格相关的代码,并通过nuget卸载与之相关的各种包,包括WebMatrix、oauth和openid包。

0
0 Comments

问题的出现原因是在创建一个MVC ASP.NET应用程序时,会生成两个web.config文件。作者之前的更改是放在错误的web.config文件中(即在views文件夹下的那个),而不是应用程序的主要web.config文件中。通过将原问题中的更改应用到另一个配置文件中,应用程序就可以按预期工作了。

解决方法:将更改应用到正确的web.config文件中。

关于这两个web.config文件的更多信息,请参考这个Stack Overflow的问题:Why does .NET generate two web.config files in an MVC asp.net application?

0
0 Comments

MVC 4应用程序在运行时首先使用Windows身份验证进入登录页面的原因是控制器中存在额外的控件,这些控件指定用户在访问任何页面之前必须先登录。

解决方法是检查控制器中是否存在[Authorize(Roles = "admin")]的控件。如果存在该控件,将会强制所有用户先登录。但在该问题中,控制器中并没有这样的控件,因此不能通过添加该控件来解决问题。

该问题的原因是控制器中不存在控件指定用户必须先登录,因此无法通过添加控件来解决问题。

0