我正在尝试实现“单点登录”功能,即用户使用用户名和密码登录网站。然后,我想使用本地令牌中的那些凭据,并应要求允许用户使用在Umbraco中开发的另一个项目。因此,如果用户单击网站上的GetAccess按钮,则他应该能够登录并自动查看Umbraco后端,而无需从Umbraco标准登录窗口再次登录。
我有一个用户登录的网站。用户登录后,我使用angularjs将useremail从本地令牌传递到Umbraco WebAPI。 (效果很好)
API通过$ Http.Post接收角度请求,并使用Umbraco.findByEmailAsync(loginModel.Username).
在后端验证用户方法在Umbraco中找到用户
如果找到用户记录且结果为成功,则我使用var result = await signInManager.PasswordSignInAsync(user.UserName, loginModel.Password, isPersistent: true, shouldLockout: false);
返回始终为true的密码。
,然后我使用UmbracoContext.Security.PerformLogin(user.Id);
在后端启用当前用户登录,而无需使用Umbraco标准登录窗口。 **这部分返回成功,但似乎用户仍未登录。
我还使用FormsAuthentication.SetAuthCookie(user.UserName, true);
在浏览器中设置了用户Cookie
然后我将控件重定向到本地umbraco url http://localhost:57933/umbraco/#/login
,以查看用户是否可以看到Umbraco后端,但在浏览器中却看到了Umbraco标准登录框。似乎用户根本没有登录。 / p>
我不知道缺少什么以及应该触发什么功能...
注意:我正在按照帖子中的建议使用UmbracoCustomOwinStartup类。 https://our.umbraco.com/forum/extending-umbraco-and-using-the-api/85076-detect-backoffice-user-login-and-logout
谢谢。