sitecore中赤裸裸的MembershipProvider

 2023-02-16    348  

问题描述

我正在尝试为Sitecore实施一个真正真正的简单empersipprovider,但我不确定它是否是易于实际工作.基本上我们已经为用户数据拥有了自定义商店,所以我知道客户MembershipProvider是要走的方式.但是我的应用程序不会记录任何人,系统的不同部分是负责任的.此外,它不在乎究竟登录了谁,只要它们是或不是(世卫组织部分在我的网站的内容区域中不相关).

那么关于这个的最佳方式是什么?我在HTTP标题中传递了一个令牌,让我识别有人是否登录(我甚至可以使用它来实际上发现客户是谁,如果我如此希望) – 别担心它是加密的.

sitecore中赤裸裸的MembershipProvider

我已经阅读了Sitecore文档,但它们都处理了MembershipProvider S的完整实现.

所以它可以实际上有一个只有这一点的成员提供者,即返回用户以记录的那些被记录或”匿名”用户来返回给谁?它不需要关注其他任何 – 密码重置,请通过电子邮件和所有爵士乐的全部查阅用户.

谢谢,
尼克

编辑:在下面的Jens的帮助下,我已经避免了一个全吹的MembershipProvider,支持更轻便的方法.

这就是我到目前为止的内容,问题是用户不停地登录多个请求.

public class TokenLogin : HttpRequestProcessor
{


    #region Overrides of HttpRequestProcessor

    /// <summary>
    /// Processes the specified args.
    /// </summary>
    /// <param name="args">The args.</param>
    public override void Process(HttpRequestArgs args)
    {
        var customer = SomeCodeToParseAndValidateToken();

        //customer is null if token is invalid or missing
        if(customer == null || Sitecore.Context.User.IsAuthenticated) return;

        CreateVirtualUser(customer);
    }

    private static void CreateVirtualUser(CustomerAccount customer)
    {
        string userName = "extranet\\" + customer.CustomerAccountId;

        User userItem = AuthenticationManager.BuildVirtualUser(userName, true);   
        userItem.Profile.Initialize(userName, true);    
        userItem.Profile.Save();

        AuthenticationManager.Login(userItem.Name);
    }

    #endregion
}

推荐答案

实现empersepprovider是您似乎需要的事情的大量工作.如果我是你,我会实施一个场景,每当有人需要登录时都会创建虚拟用户.
因此,逻辑将要检查用户是否具有令牌,然后创建虚拟用户,记录虚拟用户,并且您应该是好的.

以下是病象上的指南: http://sdn .sitecore.net/文章/安全/假装%20user%20Roles/Virtual%20user.aspx

编辑:链接中的代码是削弱的.以下是您添加虚拟用户的方式:

userName = "extranet\\"+userName    
   User userItem = AuthenticationManager.BuildVirtualUser(userName, true);   
   userItem.Profile.Initialize(userName, true);    
   userItem.Profile.Email = userName + "@yourdomain.com";   
   userItem.Profile.Save();

   AuthenticationManager.Login(userItem.Name)

编辑2:我有以下代码:

public class TestVirtualUserProcessor : HttpRequestProcessor
    {


      public override void Process(HttpRequestArgs args)
      {
        HttpContext.Current.Response.Write(Sitecore.Context.User.Name + "<br/>");
        HttpContext.Current.Response.Write(Sitecore.Context.User.IsAuthenticated + "<br/>");

        CreateVirtualUser("jenneren");

        HttpContext.Current.Response.Write(Sitecore.Context.User.Name + "<br/>");
        HttpContext.Current.Response.Write(Sitecore.Context.User.IsAuthenticated + "<br/>");
        }

      private static void CreateVirtualUser(string name)
      {
        string userName = "extranet\\" + name;

        User userItem = AuthenticationManager.BuildVirtualUser(userName, true);
        userItem.Profile.Initialize(userName, true);
        userItem.Profile.Save();

        AuthenticationManager.Login(userItem.Name);
      }


    }

此输出第一次击中前端的第一次输出:

外联网\匿名
错误的
外联网\ jenneren.
真正的

然后第二次击中前端,我得到:

外联网\ jenneren
真的
外联网\ jenneren.
真正的

所以它应该工作.
干杯
Jens

以上所述是小编给大家介绍的sitecore中赤裸裸的MembershipProvider,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33915.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。