我目前正在開發一個不使用身份的項目。Cookie無身份Asp.net核心
事情是,這個項目應該有一個記住我的選項,允許用戶自動重新連接到網站。
我的問題是,我找不到任何完整的tutoriel來創建一個沒有身份的cookie。
如果有人有代碼或教學課程:)
感謝
我目前正在開發一個不使用身份的項目。Cookie無身份Asp.net核心
事情是,這個項目應該有一個記住我的選項,允許用戶自動重新連接到網站。
我的問題是,我找不到任何完整的tutoriel來創建一個沒有身份的cookie。
如果有人有代碼或教學課程:)
感謝
在燈架上有一個在這裏相當好文章一個很好的例子:Using Cookie Middleware without ASP.NET Core Identity。
基本上你所做的是設置cookie處理中間件就好像你要識別用戶,但是你只是創建一個ClaimsPrincipal對象而不要求用戶登錄。您將該對象傳遞給SigninAsync方法,併爲您創建cookie。如果你按照這篇文章,你應該沒問題。
我已經按照文檔的文章,對我來說不是我期望從一個或兩個值設置一個基本的cookie來重新連接用戶。 – OrcusZ
是的,它看起來有點複雜,但我認爲如果你自己實現了一切,你最終會得到類似的結果。您仍然可以通過HttpContext.Response.Cookies訪問Cookie。如果您在使用Intellisense的MVC控制器中採取行動,那麼您會在該處看到它。但是您需要每個請求的信息,因此您需要創建一些中間件,並將其放置在管道的前端,以訪問上下文並在Cookie到達任何控制器之前對其進行管理。所以你最終會寫一些類似文章中的中間件組件。 – GlennSills
在我的項目中,我使用AngularJS作爲前端和.Net核心API作爲後端。 因此,我不需要配置頁面AccessDeniedPath
,LoginPath
等。
這是我做的:
配置的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」。並瞭解如何獲取用戶名。
我想你是問如何在用戶使用「記住我?」登錄時製作持久性cookie。複選框已選中。
所有答案都在正確的路徑上 - 您最終會調用HttpContext.Authentication.SignInAsync
,但Cookie中間件默認會發出會話Cookie。您需要將身份驗證屬性作爲第三個參數傳遞,以使Cookie保持不變,例如:
HttpContext.Authentication.SignInAsync(
Options.Cookies.ApplicationCookieAuthenticationScheme,
userPrincipal,
new AuthenticationProperties { IsPersistent = isPersistent });
編寫cookie:https://msdn.microsoft.com/zh-cn/library/aa287547( v = vs.71).aspx閱讀一個cookie:https://msdn.microsoft.com/en-us/library/aa287533(v=vs.71).aspx – Kevin
我有一個簡單的cookie auth解決方案示例https: //github.com/joeaudette/cloudscribe.Web.SimpleAuth –