加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 是否可以将.ASPXAUTH用于我自己的日志系统?

发布时间:2020-05-25 04:47:57 所属栏目:asp.Net 来源:互联网
导读:对于Web应用程序,我使用ASP.NET成员资格切换到使用我自己的登录系统,只需执行类似这样的操作即可将用户标记为已登录: Session[UserId] = User.Id 是否可以将用户ID存储在ASPXAUTH cookie中,捎带其加密,而不是使用标准会话? 目标是登录状态比会话持续的时间

对于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;
    /

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读