Я сослался на код из Как бы я имитировал 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'.
Я старался изо всех сил, чтобы найти решение.Но не смог найти.Может кто-нибудь помочь мне, почему я получаю эту ошибку.