介紹 我在申請工作許可,註冊用戶爲基礎的一些行動授權的角色/控制器,即如何授權用戶誰在Asp.Net MVC使用外部登錄登錄
[Authorize(Roles = "Developer,Admin,User")]
我的問題是,如果用戶使用Facebook或Google等外部登錄方法登錄,該如何授權他呢?
應該做什麼或可以做到這一點,如果有人知道這一點,那麼請幫助。謝謝你的時間。
介紹 我在申請工作許可,註冊用戶爲基礎的一些行動授權的角色/控制器,即如何授權用戶誰在Asp.Net MVC使用外部登錄登錄
[Authorize(Roles = "Developer,Admin,User")]
我的問題是,如果用戶使用Facebook或Google等外部登錄方法登錄,該如何授權他呢?
應該做什麼或可以做到這一點,如果有人知道這一點,那麼請幫助。謝謝你的時間。
做這樣的
public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, DisplayName=model.Displayname };
var result = await UserManager.CreateAsync(user);
if (result.Succeeded)
{
result = await UserManager.AddLoginAsync(user.Id, info.Login);
if (result.Succeeded)
{
UserManager.AddToRole(user.Id, "ExternalUser");// This is the important line
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
return RedirectToLocal(returnUrl);
}
}
}
每當用戶通過外部服務記錄,他是自動映射到角色「外部用戶」。現在,您可以授權它這樣
[Authorize(Roles = "Externaluser")]
感謝您的幫助,這是我看到的正確方法 –
如果你在「適當」的方式記錄他們,所有的角色的東西的作品如預期,你[Authorize(Roles = "Developer,Admin,User"]
屬性將如預期的開箱。
我可以給這個最好的建議是打開Visual Studio,創建一個新的ASP.NET MVC網站並選擇個人用戶帳戶。創建的代碼具有包含外部登錄功能(Facebook,Twitter等)的完整實現。
您應該複製它在自己的代碼庫中寫入模板/示例的方式。
感謝您的幫助,添加外部登錄用戶角色解決了問題 –
很高興幫助。 – Luke
只需將它們添加到外部登錄回調方法中的角色 –
@RachitGupta感謝您的回覆,您可以將它作爲答案嗎? –
查看下面的答案。希望它有助於 –