#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] к этим конкретным действиям.