Требуемые разрешения не предоставляются.По крайней мере одно из этих разрешений должно быть предоставлено: Пользователи - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь реализовать загрузку файлов в проекте ASP.NET Boilerplate. Это мой код:

Index.cshtml

<form asp-controller="Backlog" asp-action="Upload_Image" method="post"
      enctype="multipart/form-data">

  <input type="file" name="file" />

  <button type="submit">Upload Image</button>

</form>

BacklogController.cs

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Abp.Application.Services.Dto;
using Abp.AspNetCore.Mvc.Authorization;
using MyProject.Authorization;
using MyProject.Controllers;
using MyProject.Users;
using MyProject.Web.Models.Backlog;
using MyProject.Users.Dto;
using System.Collections.Generic;
using MyProject.Backlog;

namespace MyProject.Controllers
{
    [AbpMvcAuthorize(PermissionNames.Pages_Backlog)]
    public class BacklogController : MyProjectControllerBase
    {
        private readonly IUserAppService _userAppService;
        private readonly BacklogAppService _backlogAppService;

        public BacklogController(IUserAppService userAppService, BacklogAppService backlogAppService)
        {
            _userAppService = userAppService;
            _backlogAppService = backlogAppService;
        }

        public async Task<ActionResult> Index()
        {
            var backlogItems = (await _backlogAppService.GetBackLogItems()).Items;

            var model = new BacklogListViewModel
            {
                BacklogItems = backlogItems
            };

            return View(model);
        }

        [HttpPost] // Postback
        public async Task<IActionResult> Upload_Image(IFormFile file)
        {
            if (file == null || file.Length == 0) return Content("file not selected");

            return View();
        }
    }
}

Веб-приложение запускается, но когда я нажимаю кнопку загрузки, оно говорит, что:

необходимые разрешения не предоставляются. По крайней мере одно из этих разрешений должно быть предоставлено: Пользователи

Где я делаю это неправильно? Иначе, есть ли более простой способ осуществить загрузку файлов на ASP.NET Boilerplate?

1 Ответ

0 голосов
/ 12 марта 2019

Вы вводите IUserAppService и его реализация требует PermissionNames.Pages_Users:

[AbpAuthorize(PermissionNames.Pages_Users)]
public class UserAppService : AsyncCrudAppService<...>, IUserAppService

Это ваши варианты:

  1. Удалитьвнедрение IUserAppService из BacklogController, поскольку вы его не используете.

    // private readonly IUserAppService _userAppService;
    private readonly BacklogAppService _backlogAppService;
    
    // public BacklogController(IUserAppService userAppService, BacklogAppService backlogAppService)
    public BacklogController(BacklogAppService backlogAppService)
    {
        // _userAppService = userAppService;
        _backlogAppService = backlogAppService;
    }
    
  2. Войдите в систему как администратор клиента, для которого PermissionNames.Pages_Users предоставлен по умолчанию.

  3. Предоставить PermissionNames.Pages_Users пользователю, в который вы вошли.
...