我是asp.net中的新手。我正在为ASP.NET中的Membership类工作。我的项目中有一些页面,例如default.aspx,page1.aspx,page2.aspx。我已将登录控件放在default.aspx中。现在,我想在用户想要访问任何页面时检查用户的身份验证。我已经实现了这个目标,在每个页面的Page_Load事件中放入最下面的内容。但是想要一些建议,以便我可以从每个页面中删除这个重复的代码。并实现一些可适用于每个页面的逻辑。我是否需要使用global.asax或任何可以在所有页面中继承检查身份验证的类?
if(!HttpContext.Current.User.Identity.IsAuthenticated)
{
Response.redirect("default.aspx");
}
答案 0 :(得分:2)
您可以从asp.net应用程序的根目录中的web.config文件的authentication元素设置默认登录页面。
一个例子......
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
timeout="30"
name=".ASPXAUTH"
path="/"
defaultUrl="default.aspx"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" />
</authentication>
通过授权元素控制对文件和文件夹的访问。
一个例子......
<authorization>
<allow roles="Admin" />
<deny users="?" />
</authorization>
有关详细信息和更多示例,请参阅the documentation。
答案 1 :(得分:0)
在.net中,您可以使用authorization
元素在web.config中设置它。
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
这将拒绝所有未经过身份验证的用户访问您在authentication
元素中指定的“登录”页面之外的任何其他页面。
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
timeout="30"
name=".ASPXAUTH"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="default.aspx"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" />
</authentication>
</system.web>
取自here
答案 2 :(得分:0)
出于授权的目的,Baldy是正确的。
对于您可能不希望每页重复的任何其他代码,您可能希望将其放在所有网页所属的母版页中。
Masterpages: http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx