簡體   English   中英

ASP.NET MVC4 C#:獲取用戶角色

[英]ASP.NET MVC4 c# : Get user roles

這是我用於Global.asax中的成員資格的代碼

protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
    {
        if (FormsAuthentication.CookiesSupported == true)
        {
            if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            {
                try
                {

                    //let us take out the username now                
                    string username = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;
                    string roles = string.Empty;

                    IUserService _userService= new UserService();
                    UserViewModel user = _userService.SelectUserByUserName(username).UserList.FirstOrDefault();
                    roles = user.role;

                    //let us extract the roles from our own custom cookie


                    //Let us set the Pricipal with our user specific details
                    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(
                      new System.Security.Principal.GenericIdentity(username, "Forms"), roles.Split(','));
                }
                catch (Exception)
                {
                    //somehting went wrong
                }
            }
        }
    }

我正在嘗試將用戶重定向到其他視圖(如果他的角色是“經理”),這是我試圖在控制器中獲取用戶角色的方法,但是它返回一個空列表:

[Authorize(Roles = "admin, manager")]
        public ActionResult Index()
        {

            string[] rolesArray;
            rolesArray = Roles.GetAllRoles();// returns an empty array 
            foreach(var item in rolesArray){
                if(item == "manager"){
                    return RedirectToAction("index", "Manager");
                }
            }
            return View();
        }

您應該可以調用.IsInRole()

if (User.IsInRole("manager"))
{
    return RedirectToAction("index", "Manager");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM