MVC:重定向到登录屏幕

时间:2014-04-30 18:26:50

标签: asp.net-mvc

我正在接管现有的ASP.NET MVC 5项目,以尝试理解MVC框架。我注意到,当用户没有登录,并且他试图访问某些网页时,它会自动将他重定向到登录屏幕。我相信这与Web.config文件中的以下内容有关:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

但是,即使用户未登录,某些网页也允许访问它们(并且不会如上所述重定向)。

所以我的问题是:我在哪里配置哪些网页会自动重定向到登录界面,哪些网页可以不经认证就可以访问?

3 个答案:

答案 0 :(得分:5)

article说明了如何使用表单身份验证执行此操作。配置的简短片段如下所示。默认情况下,default1.aspx可以访问。

<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl="~/Account/Login" timeout="2880" />
      </authentication>
      <!-- This section denies access to all files in this application except for those that you have not explicitly specified by using another setting. -->
      <authorization>
        <deny users="?" /> 
      </authorization>
   </system.web>
   <!-- This section gives the unauthenticated user access to the Default1.aspx page only. It is located in the same folder as this configuration file. -->
   <location path="default1.aspx">
      <system.web>
         <authorization>
            <allow users ="*" />
         </authorization>
      </system.web>
   </location>
</configuration>

答案 1 :(得分:4)

您可以在控制器操作上设置[Authorize]属性,该属性将要求用户获得授权,否则它们将被重定向到配置中指定的页面。您还可以指定访问操作所需的各个角色,或者需要对控制器上的所有操作进行授权,并明确关闭操作授权。

授权个人行为

public class HomeController: Controller 
{  
    public string Index() 
    { 
        // Not authorized 
    } 

    [Authorize]
    public string SecretAction() 
    { 
        // Authorized (redirects to login) 
    } 
} 

授权所有操作

[Authorize]
public class HomeController: Controller 
{  
    public string Index() 
    { 
        // Authorized (redirects to login) 
    } 

    public string SecretAction() 
    { 
        // Authorized (redirects to login) 
    } 
} 

授权除一个以外的所有操作

[Authorize]
public class HomeController: Controller 
{  
    public string Index() 
    { 
        // Authorized (redirects to login) 
    } 

    [AllowAnonymous]
    public string PublicAction() 
    { 
        // Not authorized
    } 
} 

更多信息:http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

在这里:Authorize attribute in ASP.NET MVC

答案 2 :(得分:0)

如果您正在做一些简单的事情(比如一两页公共内容),那么简单的解决方法就是:

Response.SuppressFormsAuthenticationRedirect = true;