asp.net – 是否可以将.ASPXAUTH用于我自己的日志系统?
|
对于Web应用程序,我使用ASP.NET成员资格切换到使用我自己的登录系统,只需执行类似这样的操作即可将用户标记为已登录: Session["UserId"] = User.Id 是否可以将用户ID存储在ASPXAUTH cookie中,捎带其加密,而不是使用标准会话? 目标是登录状态比会话持续的时间更长,并且在浏览器和服务器重新启动后都能继续存在. 解决方法更新:提供的原始答案是使用MembershipProvider的项目,它在答案本身中进行了解释.我,提问者,我没有使用它,所以我的问题的答案略有不同,但从这个答案中提取.对于任何关心并留下原文的人来说,我的答案都在最底层,因为它包含很多价值.是的,您可以将FormsAuthentication用于您自己的策略.虽然asp.net数据库结构不适合您,但您可以提供MembershipProvider的简单实现,以允许使用Membership基础结构.这两个功能没有结婚,所以你可以决定什么适合你. 记住你的问题和一些评论,这是一个可运行的例子,说明如何在不与默认实现和db模式结合的情况下利用提供者模型是多么简单. 为您自己的目的使用表单auth很简单.您只需提供身份验证并设置自己的票证(cookie). 使用自定义成员资格几乎一样简单.您可以根据需要实现少量或多少提供程序,以支持您希望使用的asp.net基础结构功能. 例如在下面的示例中,我展示了在登录过程中,您可以简单地处理登录控件上的事件以验证凭据并设置票证.完成. 但我还将展示如何利用提供者模型和实现自定义成员资格提供程序可以产生更强大,更清晰的代码.当我们进入自定义成员资格提供程序时,我实现了支持使用成员身份子系统所需的最低限度,以便轻松访问用户的元数据,而无需编写自己的基础结构. 只需将这些文件放入空项目即可. web.config中 <?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true"/>
<authorization>
<deny users="?"/>
</authorization>
<authentication mode="Forms"/>
<!--
optional but recommended. reusing the membership infrastructure via custom provider divorces
you from the aspnetdb but retains all of the baked in infrastructure which you do not have to
develop or maintain
-->
<membership defaultProvider="mine">
<providers>
<add name="mine" type="CustomAuthRepurposingFormsAuth.MyMembershipProvider"/>
</providers>
</membership>
</system.web>
</configuration>
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="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<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>
</div>
</form>
</body>
</html>
为Login.aspx <%@ Page Title="" Language="C#" MasterPageFile="Site1.Master" %>
<%@ Import Namespace="CustomAuthRepurposingFormsAuth" %>
<script runat="server">
/*
* If you don't want to use a custom membership provider to authenticate
* simply place your logic in the login control's handler and remove the
* membership element from config. It would have to take a very very
* compelling edge case to motivate me to not use a custom membership provider.
*
*/
//protected void Login1_Authenticate(object sender,AuthenticateEventArgs e)
//{
// // perform mindbendingly complex authentication logic
// e.Authenticated = Login1.UserName == Login1.Password;
/ |
- asp.net – 普通Web API或Web API和OData?
- asp.net-mvc – 处理asp.net mvc中的错误和异常
- asp.net-mvc-3 – MVC将方法添加到jquery.validate.unobtru
- asp.net – Microsoft JScript运行时错误:’Sys’未定义
- 如何将global.asax文件添加到ASP.NET MVC4项目?
- asp.net – jQuery AJAX vs. UpdatePanel
- 从ASP.Net页面通过C#将NetworkCredential传递给HttpWebRequ
- 如何在ASP.NET中设置TextBox中的对齐中心?
- asp.net-mvc – 在Asp.Net MVC 2中有一种更好的方法来返回4
- asp.net-mvc-4 – 如何在MVC4 C#中安排任务?
- asp.net-mvc – 使用ASP.NET MVC帮助器方法设置m
- asp.net – 如何停止RadioButtonList标签文本从按
- ASP.NET VNext类库System.Runtime.Serialization
- asp.net-mvc – 当ModelState为InValid时调用的A
- asp.net-mvc – 在我的ASP.NET MVC网站中缓存不能
- asp.net – 如何处理@RenderBody()?
- asp.net-mvc-3 – Telerik Kendo ui网格显示html
- asp.net – 问题检查后面的代码中的单选按钮
- asp.net-mvc – 从Asp.net MVC发送HTML电子邮件的
- asp.net – 如何在Json中使用Gson将对象类型包含
