gpt4 book ai didi

asp.net-mvc - 我可以在没有成员身份的情况下创建 ASP.NET 用户吗?

转载 作者:行者123 更新时间:2023-12-02 14:56:50 24 4
gpt4 key购买 nike

我正在实现 OAuth(我第一次),并且我已经花了一段时间研究如何使用 ASP.NET MVC 实现它(我不想使用 OpenID)

我已经(暂时)解决了:

  • 获取 OAuth accessToken
  • 检索 Facebook(或 Google 等)用户 ID
  • 正在检查数据库表中是否有此 ID -(专门为 OAuth 注册创建的表)
  • 如果找到 ID,我想使用 FormsAuth.SetAuthCookie() 并且,
  • 为他们分配一个角色来访问网站的成员(member)区域 - 但此时尚未进行成员(member)注册,因此没有角色,因此无法访问网站的成员(member)区域,这是我的问题.

我考虑过以用户名 = Fb.ID 和密码 = 随机(存储在上面提到的 OAuth 数据库表中)以编程方式创建 asp 用户的想法,并以编程方式登录它们,但是

A:看起来真的很啰嗦

B:这样存储此密码似乎是错误的

我应该创建一个用户并以编程方式登录他们吗?

使用 asp.net 成员(member)资格和 OAuth 时是否有最佳实践?

最佳答案

一旦您检索到 FB Id 或 OpenId,您需要像这样保存身份验证 cookie:

    HttpCookie httpCookie = FormsAuthentication.GetAuthCookie(openId, remember);
httpCookie.Expires = DateTime.Now.AddMonths(1);
HttpContext.Current.Response.SetCookie(httpCookie);

然后就可以在Global.asax中设置角色了

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
var context = HttpContext.Current;
if (context.User != null && context.User.Identity.IsAuthenticated)
{
var user = new Dao<User>().GetByOpenId(context.User.Identity.Name);
context.User = new GenericPrincipal(context.User.Identity,
new[] { Enum.GetName(typeof(UserRole), user.Role) });
}
}

关于asp.net-mvc - 我可以在没有成员身份的情况下创建 ASP.NET 用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056699/

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