1. При подключении проект никак не может найти файл google-services.json, не смотря на то, куда я его только не пихала. Он как находился в корневой папке проекта, как и в папке Android.для начала посмотрите свойства проекта и целевую папку компиляции (могут быть две - debug и release, на этапе разработки по дефолту debug). попробуйте положить туда.
копировать в выходной каталогесть слабое место. особенно в случае веб версии (если проект таковую допускает) - файл, возможно, содержит параметры доступа к базе?..
если шаблон проекта имеет свои конфигурационные паки изначально, значит просто надо скопировать в прототип этих папок в проекте (если их более одной - разобраться с назначением и выбрать подходящую), и ручками добавить файл в проект.. успехов!
@model UserRolesViewModel
@{
}
<div>
<h1>@Model.UserName</h1>
<div>
<form asp-area="admin" asp-controller="Users" asp-action="AddRole" method="post" enctype="multipart/form-data">
<input type="hidden" asp-for="@Model.Id" />
<input type="hidden" asp-for="@Model.UserName" />
@foreach (var key in Model.RoleChecked.Keys)
{
<div>
<label asp-for="RoleChecked[key]">@key</label>
<input type="checkbox" asp-for="RoleChecked[key]"/>
</div>
}
<input type="submit" value="Accept" />
</form>
</div>
</div>
public async Task<IActionResult> AddRole(Guid id, CancellationToken ct)
{
var user = await userMgr.FindByIdAsync(id.ToString());
var model = new UserRolesViewModel();
model.Id = id;
model.UserName = user.UserName;
model.RoleChecked = new Dictionary<string, bool>();
foreach (var role in roleMgr.Roles)
{
if (await userMgr.IsInRoleAsync(user, role.Name))
{
model.RoleChecked[role.Name] = true;
}
else
{
model.RoleChecked[role.Name] = false;
}
}
return await Task.Run(() => View(model), ct);
}
[HttpPost]
public async Task<IActionResult> AddRole(UserRolesViewModel model, CancellationToken ct)
{
var user = await userMgr.FindByIdAsync(model.Id.ToString());
if (ModelState.IsValid)
{
var inroles = new List<string>();
var exroles = new List<string>();
foreach (var rc in model.RoleChecked)
{
if (rc.Value == false)
exroles.Add(rc.Key);
else
inroles.Add(rc.Key);
}
foreach (var role in exroles)
{
await userMgr.RemoveFromRoleAsync(user, role);
}
foreach (var role in inroles)
{
await userMgr.AddToRoleAsync(user, role);
}
return RedirectToAction(nameof(UsersController.User), nameof(UsersController).CutController(), new { area = "Admin", Id = user.Id });
}
return await Task.Run(() => View(model), ct);
}
public class UserRolesViewModel
{
[Required]
[Display(Name = "Id")]
public Guid Id { get; set; }
[Required]
[Display(Name = "User")]
public string UserName { get; set; }
[Required]
[Display(Name = "Role")]
public Dictionary<string, bool> RoleChecked { get; set; }
}
// ...
services.AddCors(options =>
{
options.AddPolicy("AllowTeachToolClient",
builder =>
{
builder.WithOrigins("http://localhost:3000", "https://localhost:3000");
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
});
// ...
SymmetricSecurityKey
. Это для тех, кто захочет аналогично как я попробовать использовать что-то типа RSA(2048)Я не говорю, что они не работают, просто для начала с этим могут быть проблемы с реализацией
'Accept': '*/*',
'Host': 'http://localhost:3000',
'Content-Type': 'application/json',
'Authorization': 'Bearer {token}'
'Accept': '*/*',
'Host': "http://localhost:3000",
'Content-Type': 'application/json;'
services.AddCors(options =>
{
options.AddPolicy("AllowTeachToolClient",
builder =>
{
builder.WithOrigins("http://localhost:3000");
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
});
app.UseAuthentication();
и app.UseAuthorization();
. Вырезка с самого вопроса:var app = builder.Build();
app.UseCors("AllowTeachToolClient");
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
В будущем я хотел бы попробовать сделать так, чтобы база была на каком-то сервере, чтобы многие могли пользоваться приложением, но не думаю, что это будет нормально работать, да и вообще не красиво( Заранее спасибо.