0

我有一个 asp.net Web 应用程序,其中包含三个 Web 表单,即 SecuredWebForm.aspx、UnSecuredWebForm.aspx 和 LoginForm.aspx。我希望仅当用户使用 LoginForm.aspx 登录时才能访问 SecuredWebForm.aspx。对于UnSecuredWebForm.aspx,无需登录。如何实现?提前致谢。

4

3 回答 3

1

这是它的指南:http: //www.codeproject.com/Articles/13872/Form-authentication-and-authorization-in-ASP-NET

另一个指南如何做到这一点:

http://support.microsoft.com/kb/301240/EN-US

http://support.microsoft.com/kb/316871

于 2012-09-22T11:53:36.433 回答
0

您可以使用它 - 基于location attribute

<configuration>
   <location path="SecuredWebForm.aspx">
      <system.web>
         <authorization>
            <allow users="..."/>
         </authorization>
      </system.web>
   </location>
</configuration>

注意:您调整用户的价值

链接:http: //msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.71%29.aspx

如果你有安全架构,你可以使用IsAuthenticated属性

链接:http: //msdn.microsoft.com/en-us/library/system.web.httprequest.isauthenticated.aspx

 if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
    }
于 2012-09-22T11:53:51.043 回答
0

为此目的使用 Membership 类会很好。如果您没有具体要求。

如果您已经使用 WebApplication 创建了 NewProject,那么 VisualStudio 可能已经为您设置了所有关注的配置,web.config如下所示:

web.config通过添加<authorization...>...</authorization>元素进行编辑。它将通过访问授权内容来阻止匿名用户。

<configuration>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="ConnectionStringData" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <authorization>
        <deny users="?"/>
     </authorization>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>
    ...
    ...
  </system.web>
  ...
  ...
</configuration>

您可能还需要保护匿名用户的网络表单,然后您可以编写以下内容:

protected void Page_Load(object sender, EventArgs e)
{
    if (!User.Identity.IsAuthenticated)
      Response.Redirect("Login.aspx");

    // Todo add code here.        
}
于 2012-09-22T12:23:32.857 回答