2023-02-16 348
我正在尝试为Sitecore实施一个真正真正的简单empersipprovider,但我不确定它是否是易于实际工作.基本上我们已经为用户数据拥有了自定义商店,所以我知道客户MembershipProvider是要走的方式.但是我的应用程序不会记录任何人,系统的不同部分是负责任的.此外,它不在乎究竟登录了谁,只要它们是或不是(世卫组织部分在我的网站的内容区域中不相关).
那么关于这个的最佳方式是什么?我在HTTP标题中传递了一个令牌,让我识别有人是否登录(我甚至可以使用它来实际上发现客户是谁,如果我如此希望) – 别担心它是加密的.
我已经阅读了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/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态