最近开始一个小 asp.net 项目,整个项目需要登录才能操作。以前大家都采用 asp 的方式 session + cookie  来实现身份验证,我一直对 asp.net 自带的 forms 验证早就耳闻,苦于没实践,今天刚好逮到机会实际应用一下。
    问题:大家都说使用 forms 验证无法得到当前登录用户除了用户名之外的更多信息,经过我的一番小试验,在 forms 方式下自带的 userdata 可以为我们施展天地的地方。下面记录一下我的操作步骤备忘。

step 1: web.config 配置关键地方:
使用 forms 身份验证,避免重复造轮子使用 forms 身份验证,避免重复造轮子web.config配置
 1使用 forms 身份验证,避免重复造轮子        <!--
 2使用 forms 身份验证,避免重复造轮子            通过 <authentication> 节可以配置 ASP.NET 用来 
 3使用 forms 身份验证,避免重复造轮子            识别进入用户的
 4使用 forms 身份验证,避免重复造轮子            安全身份验证模式。 
 5使用 forms 身份验证,避免重复造轮子        -->
 6使用 forms 身份验证,避免重复造轮子    <authentication mode="Forms">
 7使用 forms 身份验证,避免重复造轮子      <forms loginUrl="login.aspx" defaultUrl="index.aspx"
 8使用 forms 身份验证,避免重复造轮子             name=".ztinfozero" path="/Manager" 
 9使用 forms 身份验证,避免重复造轮子             slidingExpiration="true" timeout="10"></forms>
10使用 forms 身份验证,避免重复造轮子    </authentication>
11使用 forms 身份验证,避免重复造轮子    <authorization>
12使用 forms 身份验证,避免重复造轮子      <deny users="?"/>
13使用 forms 身份验证,避免重复造轮子    </authorization>
14使用 forms 身份验证,避免重复造轮子

    <!-- 实现自定义的 rolemanager 后需配置 :
    <roleManager defaultProvider="providerName(类名)"
        cookieName="role" cookiePath="/" enabled="true"
        cookieTimeout="30"  cookieSlidingExpiration="true"
        cookieRequireSSL="false" cookieProtection="All"
        cacheRolesInCookie="true">
      <providers>
        <clear />
        <add name="providerName(类名)" type="providerName(类名)" />
      </providers>
    </roleManager>
    -->


step 2: 构造 SiteUser Model

使用 forms 身份验证,避免重复造轮子使用 forms 身份验证,避免重复造轮子TopicUser Model
使用 forms 身份验证,避免重复造轮子[Serializable]
使用 forms 身份验证,避免重复造轮子    
public class TopicUser
    }


step 3: 创建用户登录代码:

使用 forms 身份验证,避免重复造轮子使用 forms 身份验证,避免重复造轮子数据库-用户登录方法


step 4 : 创建登录页:

使用 forms 身份验证,避免重复造轮子使用 forms 身份验证,避免重复造轮子代码
使用 forms 身份验证,避免重复造轮子protected void btnOK_Click(object sender, EventArgs e)
        }


step 5: 在 global.asax 里添加 Application_AuthenticateRequest 事件以设置当前登录用户的信息:

相关文章: