gpt4 book ai didi

c# - 没有身份的 Cookie Asp.net 核心

转载 作者:行者123 更新时间:2023-11-30 20:32:45 26 4
gpt4 key购买 nike

我目前正在从事一个不使用 Identity 的项目。

关键是这个项目应该有一个记住我的选项,允许用户自动重新连接到网站。

我的问题是我找不到任何完整的教程来创建没有身份的 cookie。

如果有人有很好的代码示例或教程 :)

谢谢

最佳答案

在我的项目中,我将 AngularJS 用于前端,将 .Net Core API 用于后端。因此,我不需要为 AccessDeniedPathLoginPath 等配置页面。

这是我的做法:

  • 在启动类中配置cookie:

    public void Configure(IApplicationBuilder app) {
    //...
    CookieAuthenticationOptions options = new CookieAuthenticationOptions();
    options.AuthenticationScheme = "MyCookie";
    options.AutomaticAuthenticate = true;
    options.CookieName = "MyCookie";
    app.UseCookieAuthentication(options);
    //...
    }
  • 登录是这样的:

    [HttpPost, Route("Login")]
    public IActionResult LogIn([FromBody]LoginModel login) {
    //...
    var identity = new ClaimsIdentity("MyCookie");
    //add the login as the name of the user
    identity.AddClaim(new Claim(ClaimTypes.Name, login.Login));
    //add a list of roles
    foreach (Role r in someList.Roles) {
    identity.AddClaim(new Claim(ClaimTypes.Role, r.Name));
    }
    var principal = new ClaimsPrincipal(identity);
    HttpContext.Authentication.SignInAsync("MyCookie", principal).Wait();
    return Ok();
    }
  • 注销是这样的:

    [HttpPost, Route("Logout")]
    public async Task<IActionResult> LogOut() {
    await HttpContext.Authentication.SignOutAsync("MyCookie");
    return Ok();
    }
  • 然后你可以这样使用它:

    [HttpPost]
    [Authorize(Roles = "Role1,Role2,Role3")]
    public IActionResult Post() {
    //...
    string userName = this.User.Identity.Name;
    //...
    }

*请注意,该方法仅对“Role1、Role2 和Role3”授权。并查看如何获取用户名。

关于c# - 没有身份的 Cookie Asp.net 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40935872/

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