Невозможно выполнить приведение System.Security.Principal.GenericPrincipal. - PullRequest
0 голосов
/ 08 октября 2018

Я сослался на код из Как бы я имитировал User.IsInRole () для создания CustomPrincipal.

Я разрабатываю приложение Asp mvc.Мне нужен собственный метод IsInRole. Поэтому я создал собственный Принцип, который наследуется от IPrincipal.

ниже мой CustomPrincipal

   public interface ICustomPrincipal: IPrincipal
    {   
        new bool IsInRole(string role);
    }

 public class CustomPrincipal: ICustomPrincipal
    {
        private User _user;


        public CustomPrincipal(User user)
        {
            _user = user;
            this.Identity = new GenericIdentity(this._user.UserName);

        }


        public IIdentity Identity
        {
            get;
            set;
        }

        public bool IsInRole(string role)
        {
            var roles = role.Split(new char[] { ','});
            return roles.Any(r => this._user.Roles.Contains(r));
        }
    }

И я попытался использовать его в бритве, поэтому я создал класс BaseViewPage, который наследует от WebViewPage, и код

 public virtual new ICustomPrincipal User
    {
        get
        {
            try
            {
                return (ICustomPrincipal)base.User; 
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

Но я получаю сообщение об ошибке в BaseViewPage, что

Невозможно привести объект типа 'System.Security.Principal.GenericPrincipal' к типу 'SchoolApp.Web.Security.ICustomPrincipal'.

Я старался изо всех сил, чтобы найти решение.Но не смог найти.Может кто-нибудь помочь мне, почему я получаю эту ошибку.

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