Asp.net 授权查看角色不';即使代码不识别角色,也无法识别
我正在尝试使用Blazor.net core 3.1设置授权,而AuthorizeView角色似乎无法识别数据库中的角色。另一方面,如果我尝试在代码中执行此操作,并且我设置了一条小消息,如果它找到用户的角色,它会找到该角色并显示“用户是有效用户”消息。我将此消息用于AzureAd Microsoft身份验证和AspNetCore标识包 这是索引页代码Asp.net 授权查看角色不';即使代码不识别角色,也无法识别,asp.net,blazor,Asp.net,Blazor,我正在尝试使用Blazor.net core 3.1设置授权,而AuthorizeView角色似乎无法识别数据库中的角色。另一方面,如果我尝试在代码中执行此操作,并且我设置了一条小消息,如果它找到用户的角色,它会找到该角色并显示“用户是有效用户”消息。我将此消息用于AzureAd Microsoft身份验证和AspNetCore标识包 这是索引页代码 @page "/" @using Microsoft.AspNetCore.Authorization; @using Microsoft.Asp
@page "/"
@using Microsoft.AspNetCore.Authorization;
@using Microsoft.AspNetCore.Identity;
@inject UserManager<IdentityUser> _UserManager
@inject RoleManager<IdentityRole> _RoleManager
@inject AuthenticationStateProvider AuthenticationStateProvider
@attribute [Authorize]
<span>@Message</span>
<AuthorizeView Roles="Users">
<Authorized>
<p>Youre In!</p>
</Authorized>
</AuthorizeView>
@code
{
[CascadingParameter]
private Task<AuthenticationState> authStateTask { get; set; }
string USER_ROLE = "Users";
string CurrentEmail;
string Message;
protected override async Task OnInitializedAsync()
{
var authState = await authStateTask;
var CurrentEmail = authState.User.Identity.Name;
if (CurrentEmail.Contains("@users.com") == true)
{
var user = await _UserManager.FindByNameAsync(CurrentEmail);
if (user == null)
{
var newUser = new IdentityUser { UserName = CurrentEmail, Email = CurrentEmail };
var createResult = await _UserManager.CreateAsync(newUser);
if (createResult.Succeeded)
{
var roleResult = await _UserManager.AddToRoleAsync(newUser, USER_ROLE);
if (roleResult.Succeeded)
{
Message = ("Good job");
}
}
}
else
{
var RoleResult = await _UserManager.IsInRoleAsync(user, USER_ROLE);
if(RoleResult == true)
{
Message = "User is a Valid User";
}
else
{
Message = "User is invalid";
}
}
}
}
}
@page/“
@使用Microsoft.AspNetCore.Authorization;
@使用Microsoft.AspNetCore.Identity;
@注入UserManager\u UserManager
@注入RoleManager\u RoleManager
@注入AuthenticationStateProvider AuthenticationStateProvider
@属性[授权]
@信息
你加入了
@代码
{
[CascadingParameter]
私有任务authStateTask{get;set;}
字符串USER\u ROLE=“Users”;
字符串当前电子邮件;
字符串消息;
受保护的重写异步任务OnInitializedAsync()
{
var authState=等待authStateTask;
var CurrentEmail=authState.User.Identity.Name;
if(CurrentEmail.Contains(“@users.com”)==true)
{
var user=await\u UserManager.FindByNameAsync(currentmail);
if(user==null)
{
var newUser=newidentityuser{UserName=currentmail,Email=currentmail};
var createResult=await\u UserManager.CreateAsync(newUser);
if(createResult.successed)
{
var roleResult=await\u UserManager.AddToRoleAsync(newUser,USER\u角色);
如果(roleResult.成功)
{
信息=(“干得好”);
}
}
}
其他的
{
var RoleResult=await\u UserManager.IsInRoleAsync(用户,用户角色);
if(RoleResult==true)
{
Message=“用户是有效用户”;
}
其他的
{
Message=“用户无效”;
}
}
}
}
}
以下是我的服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options => options.UseSqlite("DataSource=db.db"));
services.AddDefaultIdentity<IdentityUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>();
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
services.AddScoped<AuthenticationStateProvider, ServerAuthenticationStateProvider>();
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<WeatherForecastService>();
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(options=>options.UseSqlite(“DataSource=db.db”);
services.AddDefaultIdentity()
.AddRoles()
.AddEntityFrameworkStores();
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options=>Configuration.Bind(“AzureAd”,options));
services.addcontrollerswithview(选项=>
{
var policy=new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()文件
.Build();
options.Filters.Add(新的授权过滤器(策略));
});
services.addScope();
services.AddRazorPages();
AddServerSideBlazor();
services.AddSingleton();
}
你有没有找到这个解决方案?没有。我没有。虽然我找到了另一个解决方案。它并不完美,但很有效…当然。我想我遵循了这个,它对我很有效。你有没有找到这个解决方案?没有。我没有。虽然我找到了另一个解决方案。它不完美,但很有效…当然。我想我遵循了这个,它是有效的他为我祈祷。