gpt4 book ai didi

Azure ACS、WIF 3.5、Asp.Net 3.5 自定义成员资格提供程序和 IsAuthenticated

转载 作者:行者123 更新时间:2023-12-03 04:39:29 26 4
gpt4 key购买 nike

按照本指南中的步骤操作 Using Azure ACS我有一个正在运行的 Azure ACS 服务,已配置并通过 Facebook 进行身份验证,重定向回在我的开发服务器上运行的网站。

身份验证成功后,Azure ACS 重定向回我的本地开发网站,并且 IsAuthenticated 标志为 true,但是,仅当来自声明的电子邮件也存在于我的本地数据库中时,我想通过检查/将 IsAuthenticated 标志设置为 true调用自定义 MembershipProvider。如果 claim 电子邮件不存在,我想将客户重定向到注册页面。注册并通过身份验证后,我想将 IsAuthenticated 标志设置为 true。

目前,一旦通过 Facebook 和 AzureACS 进行身份验证,用户就可以请求安全页面,例如 ViewAccountBalance.aspx,即使帐户不存在,因为开箱即用的 IsAuthenticated 标记为 true。有兴趣了解其他人做了什么以及最佳实践是什么。

最佳答案

您需要明确区分身份验证和授权。由于用户通过 Facebook 登录,这意味着他已经过身份验证(您知道他是谁以及他来自哪里)。

现在,如果您想根据特定条件限制应用程序的某些部分,那么您实际上正在谈论授权。您可以考虑将角色与简单的 HttpModule 结合起来。示例:您的 HttpModule 可以验证用户正在浏览哪个页面。如果用户访问需要事件配置文件的页面,您可以使用以下代码:

public class RequiresProfileHttpModule : IHttpModule
{
public void Dispose()
{

}

public void Init(HttpApplication context)
{
context.AuthorizeRequest += new EventHandler(OnAuthorize);
}

private void OnAuthorize(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (app.Request.Url.ToString().Contains("bla") && !app.Context.User.IsInRole("UsersWithProfile"))
app.Response.Redirect("http://myapp/register.aspx");
}
}

您需要注意的唯一一件事是更新主体,以确保它具有 UsersWithProfile 角色(如果用户填写了他的电子邮件地址)。

这只是众多可能的解决方案之一。如果您使用 ASP.NET MVC,则可以使用全局 ActionFilters 获得相同的结果。或者,您也可以尝试使用 IClaimsPrincipal(如果用户有个人资料,则添加声明)。

关于Azure ACS、WIF 3.5、Asp.Net 3.5 自定义成员资格提供程序和 IsAuthenticated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10205820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com