gpt4 book ai didi

c# - 自定义属性方法级别授权

转载 作者:行者123 更新时间:2023-11-30 12:16:14 25 4
gpt4 key购买 nike

我正在尝试使用自定义属性来实现执行方法的授权权限。这是我现在拥有的(我刚刚开始使用自定义属性):

[RequiredUserPermissions(UserPermissions.CanLoginViaSite)]
internal static bool HasDesiredPermissions()
{
//Execute body here if the attribute decorated permissions exist
//for current user tracked as this._user (with permissions as
//this._user.UserPermissions (of type UserPermissions (an enum))
}

//Custom attribute class
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
internal sealed class RequiredUserPermissionsAttribute : Attribute
{
private readonly UserPermissions _requiredPermission;

public RequiredUserPermissionsAttribute(UserPermissions requiredPermission)
{ this._requiredPermission = requiredPermission; }

public UserPermissions RequiredPermissions
{ get { return _requiredPermission; } }
}

我在 stackoverflow 上找到的最接近的问题是 Using an attribute to prematurely return from a method .如果我使用的是 asp.net mvc 框架,答案将是完美的,但不幸的是,我现在正在使用 WCF 服务,并且在我现在拥有的简单数据库登录之外实现整个授权层(通过 WCF 方法调用)不是从时间轴的角度来看,现在是可行的。

我相信PostSharp可能是最好的选择,但现在又不是一个可行的选择。我被困在这里了吗?我是否应该通过采用枚举并返回 bool 的方法返回来执行此操作。如果能让我通过自定义属性实现此功能,我很乐意学习详细/复杂的东西。

如果我能提供任何帮助,我将不胜感激。

最佳答案

我不知道它是否适用于您的情况,但如果您正在编写 WCF 服务,为什么不直接从框架使用角色基础授权?它是基于角色或声明的,对于最简单的情况,您可以通过属性来定义它。可以通过 Custom Principal 定义角色或者简单地使用框架中定义的标准角色提供者。

[PrincipalPermission(SecurityAction.Demand, Role = 'LoginViaSiteVisitors')]
internal static bool HasDesiredPermissions()
{
//....
}

关于c# - 自定义属性方法级别授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com