ASP.net Атрибут авторизации MVC не работает при действии, когда контроллер имеет AllowAnonymous атрибут

#asp.net-mvc #authorization #asp.net-identity

#asp.net-mvc #авторизация #asp.net-identity

Вопрос:

У меня есть asp.net Проект MVC5 Я разрешил все действия в домашнем контроллере анонимно
, но теперь требуется предотвратить 2 действия и сделать их доступными только в том случае, если пользователь вошел в систему.
приведенный ниже код не работает, означает отображение страницы jobapply без входа в систему

 using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Data.Entity;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using myproject.Models;
using Newtonsoft.Json;
using System.Web.Script.Serialization;
using System.Net;
using System.Net.Mail;
using System.IO;
using Microsoft.AspNet.Identity;
using System.Text.RegularExpressions;
using System.Configuration;

namespace myproject.Controllers
{
    [AllowAnonymous] /************Controller level AllowAnonymous************/
    public class HomeController : Controller
    {
        private ApplicationDbContext db = new ApplicationDbContext();

        public HomeController()
        {
             //code
        }

        [Authorize]/***********************this is not working*************/
        public ActionResult Jobapply(int id)
        { 
        return View();
        }


    [Authorize]/***********************this is not working*************/
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Jobapply(VacancyApplication vacancyApp)
    {
        return View();
    }
 }
}
  

Комментарии:

1. добавьте [AllowAnonymous] к функциям, которые не требуют авторизации.

2. Если вы применяете Authorize атрибут к действиям, то нет необходимости применять AllowAnonymous атрибут к контроллеру.

3. контроллер имеет 30 действий, только 2 ограничены

Ответ №1:

Вы можете использовать атрибут [Авторизовать] на уровне контроллера и индивидуально разрешать действия, которые вы хотите разрешить без авторизации, применяя атрибут [AllowAnonymous] к этим конкретным действиям.