现在我装饰一个这样的方法,让"成员"访问我的控制器动作
[Authorize(Roles="members")]
Run Code Online (Sandbox Code Playgroud)
如何允许多个角色?例如,以下内容不起作用,但它显示了我要做的事情(允许"成员"和"管理员"访问):
[Authorize(Roles="members", "admin")]
Run Code Online (Sandbox Code Playgroud) 我正在深入研究自定义验证属性,并且很想知道其他人如何构建项目.您通常在哪里存储自定义属性?
我的第一个想法是简单地创建一个新文件夹并完成它.
有什么建议?
我试图让授权接受角色作为枚举或智能枚举, 这样我就不必调试魔术字符串及其拼写错误
但我一直因这两个错误而陷入死胡同:
属性构造函数参数“roles”的类型为“Role[]”,这不是有效的属性参数类型
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
这是我的代码:
授权角色.cs
public class AuthorizeRoles : AuthorizeAttribute
{
public AuthorizeRoles(params Role[] roles)
{
string allowed = string.Join(", ", roles.ToList().Select(x => x.Name));
Roles = allowed;
}
}
Run Code Online (Sandbox Code Playgroud)
角色.cs
public class Role
{
public readonly string Name;
public enum MyEnum // added
{
Admin,
Manager
}
public static readonly Role Admin = new Role("Admin");
public static readonly Role Manager = new Role("Manager");
public Role(string name)
{
Name = name;
}
public override string ToString()
{ …Run Code Online (Sandbox Code Playgroud)