gpt4 book ai didi

c# - 使用 cookie 的 ASP.NET web api "Remember Me"功能

转载 作者:太空狗 更新时间:2023-10-30 01:32:42 26 4
gpt4 key购买 nike

我正在尝试在我的Web Api 项目中实现“记住我” 功能。

我愿意:

  • 在用户登录时具有记住我功能。
  • 保存一个 cookies 以保持用户始终登录,这样用户就不必每次都输入用户名密码当他们访问网站时。
  • 通过读取上次登录时保存的 cookies 让用户登录。

我正在考虑的另一个问题是......当用户选中记住我<时,我正在尝试使用 JavaScript 生成 cookie/em> 复选框。是否有可能做到这一点?

我应该在 AccountController 中实现 RememberMe() 吗??

添加:这是我在 ApplicationOAuthProvider 中的代码。

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();

ApplicationUser user = await userManager.FindByNameAsync(context.UserName);

if (user == null) {...}

if (userManager.IsLockedOut(user.Id)) {...}

if (!(await userManager.CheckPasswordAsync(user, context.Password)))
{ ... }

if (!user.EmailConfirmed) {...}

ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
OAuthDefaults.AuthenticationType);
ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
CookieAuthenticationDefaults.AuthenticationType);

AuthenticationProperties properties = CreateProperties(user.UserName);
AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
context.Validated(ticket);
context.Request.Context.Authentication.SignIn(cookiesIdentity);

在我的 JavaScript 中。

$('#checkbox').click(function () {

if ($('#checkbox').is(':checked')) {
// save username and password
username = $('#txtLoginEmail').val();
password = $('#pass').val();
checkbox = $('#chkRememberMe').val();
} else {
username = '';
password = '';
checkbox = '';
}
});

最佳答案

您需要在您的应用中实现刷新 token 才能提供此功能。

基本上,您需要创建一个 RefreshTokenOAuthProvider 来生成刷新 token 。您可以使用 2 种类型的 client_id 来区分哪些客户需要被记住。

this excellent series of blog posts 中有解释(虽然它可能开始变得有点过时,但有关 owin 设置的信息是黄金)。

关于c# - 使用 cookie 的 ASP.NET web api "Remember Me"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36399859/

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