asp.net成员资格中的通用认证逻辑

时间:2012-03-28 15:18:37

标签: asp.net

我是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");

        }

3 个答案:

答案 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