我有一个 asp.net Web 应用程序,其中包含三个 Web 表单,即 SecuredWebForm.aspx、UnSecuredWebForm.aspx 和 LoginForm.aspx。我希望仅当用户使用 LoginForm.aspx 登录时才能访问 SecuredWebForm.aspx。对于UnSecuredWebForm.aspx,无需登录。如何实现?提前致谢。
3 回答
这是它的指南:http: //www.codeproject.com/Articles/13872/Form-authentication-and-authorization-in-ASP-NET
另一个指南如何做到这一点:
您可以使用它 - 基于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)
{
}
为此目的使用 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.
}