我正在为 Umbraco 8 中的用户实施 2FA,在登录后但在输入代码之前,我需要进行一些检查。对于此检查,我需要知道哪个用户已登录,但我无法弄清楚如何才能知道哪个用户已登录。
用户在后台登录后,我显示了一个 html 模板,这可以通过这行代码实现:
public string GetTwoFactorView(IOwinContext owinContext, UmbracoContext umbracoContext, string username) =>
PackageConstants.PathToMfaHtmlTemplate;
该模板链接到一个 angularjs 控制器:
<div ng-controller="mfaLoginController" class="umb-login-container">
//...
</div>
在我的控制器中,我可以访问服务:
userService
authResource
但两者似乎都没有用户数据。我可以在这里注入其他服务来为我提供用户数据吗?
我需要从这个控制器对 Umbraco API 进行 API 调用:
[IsBackOffice, PluginController("LoginMfa")]
public class MfaLoginApiController : UmbracoApiController
{
//...
}
在一个端点中,我设法使用下一行代码检索了 OWIN TwoFactorCookie:
var mfaCookie = Request.Headers.GetCookies(".AspNet.UmbracoTwoFactorCookie").FirstOrDefault()
.Cookies.FirstOrDefault(cookie => cookie.Name == ".AspNet.UmbracoTwoFactorCookie").Value;
这将返回一个看起来像加密的字符串。如果它完全存储在这个cookie中,有没有办法解密这个字符串并从这个cookie中获取用户数据(用户ID就足够了)?
或者此时是否有更好的方法来检索用户?