ASP. Net mvc приложение всегда перенаправляет меня на страницу входа, когда я пробую новое действие, даже когда я вошел в систему - PullRequest
0 голосов
/ 06 мая 2020

Короче говоря, я создал веб-сайт asp. net mvc, детский магазин. Я добавил новое действие в контроллере продуктов с именем AddReview (), которое должно добавить комментарий к существующему продукту на моем сайте.

  1. Я вхожу в систему как пользователь с ролью «Пользователи»
  2. Я пытаюсь добавить отзыв (комментарий),
  3. Меня всегда перенаправляют на страницу входа.
  4. Я пытаюсь войти, даже если я уже вошел
  5. И затем я получаю сообщение «К сожалению, запрошенная страница не может быть найдена!» по URL-адресу "http://localhost: 61356 / Products / AddReview "

Когда я добавляю атрибут [AllowAnonymous], действие работает нормально, поэтому это не проблема для действие на контроллер продукта.

Есть ли у кого-нибудь какая-либо информация о том, что я упускаю или делаю неправильно. Я ценю вашу помощь!

Краткая версия контроллера продукта:

[Authorize(Roles = "Admin")]
public class ProductsController : Controller
{
    private readonly IUnitOfWork<StoreContext> _unitOfWork = new GenericUnitOfWork<StoreContext>();
    private readonly IGenericRepository<Category> _categoryRepo;
    private readonly IGenericRepository<Product> _productRepo;
    private readonly IGenericRepository<ProductImage> _productImageRepo;

    [HttpPost]
    [ValidateAntiForgeryToken]
    [Authorize(Roles="Users")]
    public ActionResult AddReview(int id, string comment)
    {
        Review review = new Review();
        var productToUpdate = _productRepo.Find(id);
        review.Product = productToUpdate;
        review.ProductId = productToUpdate.ID;
        review.UserId = User.Identity.Name;
        review.Comment = comment;
        review.DateWriten = DateTime.Now.ToUniversalTime();

        productToUpdate.Reviews.Add(review);

        if (ModelState.IsValid)
        {
            _unitOfWork.GenericRepository<Review>().Add(review);
            _productRepo.Update(productToUpdate);
            _unitOfWork.Save();
            return RedirectToAction("Details", productToUpdate);
        }

        return View("Details", productToUpdate);
    }}

весь класс контроллера продукта можно увидеть на ProductController

Форма в представлении:

@if (Request.IsAuthenticated && User.IsInRole("Users")){
<div class="bg-white rounded shadow-sm p-4 mb-5 rating-review-select-page col-md-12">
    <h3 class="mb-4">Leave a review</h3>

    @using (Html.BeginForm("AddReview", "Products", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
        <label>Your Comment</label>
        <textarea name="comment" class="form-control" cols="50"></textarea>
        @Html.HiddenFor(model => model.ID);
        <button class="btn btn-primary btn" type="submit"> Submit Comment </button>
    }
</div>}

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...