是否可以将 .ASPXAUTH 用于我自己的日志记录系统? [英] Is it possible to use .ASPXAUTH for my own logging system?
问题描述
对于一个 Web 应用程序,我从使用 ASP.NET Membership 切换到使用我自己的登录系统,它只是做这样的事情来将用户标记为登录:
Session["UserId"] = User.Id
是否可以将用户 ID 存储在 ASPXAUTH cookie 中,搭载其加密,而不是使用标准会话?
目标是使登录状态持续时间比会话更长,并且在浏览器和服务器重新启动时都能存活.
更新:提供的原始答案是使用 MembershipProvider 的项目,答案本身对此进行了解释.我,提问者,没有使用它,所以我的问题的答案略有不同,但从这个答案中提取出来.对于任何关心的人,我将我的答案放在底部,并逐字逐句地保留原始答案,因为它包含很多价值.
<小时>是的,您可以将 FormsAuthentication 用于您自己的策略.虽然 asp.net db 结构不适合您,但您可以提供 MembershipProvider 的简单实现以允许使用 Membership 基础结构.这两个功能没有结合,所以你可以决定什么适合你.
记住您的问题和一些评论,这里有一个可运行的示例,说明在不与默认实现和数据库模式结合的情况下利用提供者模型是多么简单.
为您自己的目的使用表单身份验证很简单.您只需要提供身份验证并设置您自己的票证 (cookie).
使用自定义成员资格几乎同样简单.您可以根据需要实施尽可能少或尽可能多的提供程序,以支持您想要使用的 asp.net 基础结构功能.
例如在下面的示例中,我展示了在登录过程中您可以简单地处理登录控件上的事件以验证凭据并设置票证.完成.
但我还将展示如何利用提供者模型和实现自定义成员资格提供者可以产生更强大、更清晰的代码.当我们在自定义成员资格提供程序中时,我实现了支持使用 Membership 子系统所需的最低限度,以提供对用户元数据的轻松访问,而无需编写您自己的基础架构.
只需将这些文件放到一个空项目中即可.
web.config
<小时><配置><system.web><编译调试=真"/><授权><deny users="?"/></授权><身份验证模式=表单"/><!--可选但推荐.通过自定义提供商离婚重用会员基础设施你来自 aspnetdb,但保留了所有你不需要的基础设施发展或维持--><membership defaultProvider="mine"><提供者><add name="mine" type="CustomAuthRepurposingFormsAuth.MyMembershipProvider"/></提供者></会员资格></system.web></配置>
Site1.Master
<小时><%@ Master Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="服务器"><title></title><asp:ContentPlaceHolder ID="head" runat="server"></asp:ContentPlaceHolder>头部><身体><form id="form1" runat="server"><div><asp:LoginName ID="LoginName1" runat="server"/><asp:LoginStatus ID="LoginStatus1" runat="server"/><asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder>
</表单>