如何从控制器授权asp(mvc)项目?

时间:2016-06-30 16:01:53

标签: asp.net-mvc login asp.net-mvc-5 asp.net-authorization

我是asp的新手,我为我的web项目创建了一个登录页面,但是我设置了身份验证,但我无法为我的项目设置授权!我看到很多这样的链接Authentication and Authorization in ASP.NET Web API 但是无法在我自己的项目上实现那些,我不知道我必须从哪里开始?! 谢谢你的帮助!

这是我的控制者:

public class AuthenticationController : Controller
{
    private modelLayOut mLO = new modelLayOut();
    public bool existBool = false; 
    // GET: Authentication
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult applicantAuthentication()
    {            
        return View("ApplicantAuthentication");
    }
    public ActionResult applicantIsExist()
    {
        return View("applicantIsExist");
    }
    public ActionResult applicantPassIsWrong()
    {
        return View("applicantPassIsWrong");
    }
    public ActionResult applicantNotExist()
    {
        return View("applicantNotExist");
    }
    [HttpPost]
    public ActionResult applicantCreate(string Username, string Password, string RepeatPassword)
    {
        if (mLO.applicantExistCheck(Username))
        {
            return View("applicantIsExist");
        }
        else
        {
            mLO.insertNewApplicant(Username, Password);
            return View("ApplicantAuthentication");
        }
    }
    [HttpPost]
    public ActionResult applicantAccess(string Username, string Password)
    {
        if (mLO.applicantAccess(Username, Password))
        {
            return RedirectToAction("Home", "Home");
        }
        else
        {
            if (mLO.applicantExistCheck(Username))
            {
                return View("applicantPassIsWrong");
            }
            else
            {
                return View("applicantNotExist");
            }
        }
    }

    //agency part
    public ActionResult agencyAuthentication()
    {
        return View("AgencyAuthentication");
    }
    public ActionResult agencyPassIsWrong()
    {
        return View("agencyPassIsWrong");
    }
    public ActionResult agencyNotExist()
    {
        return View("agencyNotExist");
    }
    [HttpPost]
    public ActionResult agencyAccess(string Username, string Password)
    {
        if (mLO.agencyAccess(Username, Password))
        {               
            return RedirectToAction("Home", "Home");
        }
        else
        {
            if (mLO.agencyExistCheck(Username))
            {
                return View("agencyPassIsWrong");
            }
            else
            {
                return View("agencyNotExist");
            }
        }
    }

    //webAdmin
    public ActionResult webAdminAuthentication()
    {
        return View("WebAdminAuthentication");
    }
    public ActionResult webAdminAccessWrong()
    {
        return View("webAdminAccessWrong");
    }
    [HttpPost]
    public ActionResult webAdminAccess(string Username, string Password)
    {
        if (mLO.webAdminAccess(Username, Password))
        {
            Session["Username"] = Username;
            return RedirectToAction("webAdminPage", "Admin");
        }
        else
        {
            return View("webAdminAccessWrong");
        }
    }

2 个答案:

答案 0 :(得分:0)

如果您想在整个控制器上进行授权,只需在控制器上设置“授权”属性:

[Authorize]
public class AuthenticationController : Controller
{

}

如果您想要对sigle操作进行授权:

public class AuthenticationController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome, " + HttpContext.User.Identity.Name;
    }
}

编辑:只有经过身份验证的用户才能浏览授权方法或控制器

答案 1 :(得分:0)

您需要完全理解ASP.NET 5 Identity model(检查herehere)。然后,您应该对适合您项目的任何更改实施该功能。关于ASP.NET 5 Identity最重要的事情之一是它的简单性和灵活性,可以使用不同的用户类型和可访问性,只需使用方法注释。如果您以前有使用SQL Membership的经验,请检查here以了解如何从SQL成员身份迁移到ASP.NET身份。或者,如果您以前有使用ASP.NET Membership的经验,请检查here以了解如何从ASP.NET成员身份迁移到ASP.NET身份。 关于how say: "welcome PERSON NAME" ?上的问题,在实现ASP.NET 5 Identity之后,您只需要

  

System.Web.HttpContext.Current.User.Identity.Name

在你需要的地方!。