人如果没有梦想那和咸鱼有什么区别,即使是做咸鱼也要做最咸的那一条

—— Wy

ABP权限验证的几种方法

第一种就是在控制器或者应用层加AbpAuthorize特​性


/// <summary>
        /// 删除建议
        /// </summary>
        /// <param name="proposalId"></param>
        /// <returns></returns>
        [AbpAuthorize(PermissionNames.Pages_Blogs_Admin)]
        public async Task DeleteProposalAsync(int proposalId)
        {
            await _blogProposalRepository.DeleteAsync(proposalId);
        }

AbpAuthorize  加上特性就需要登录才能访问,里面放入权限名称,代表需要此权限才能访问


第二种就是在构造函数注入IPermissionChecker 类型的对象进来


该接口有以下几个方法

namespace Abp.Authorization
{
    //
    // 摘要:
    //     This class is used to permissions for users.
    public interface IPermissionChecker
    {
        //
        // 摘要:
        //     Checks if current user is granted for a permission.
        //
        // 参数:
        //   permissionName:
        //     Name of the permission
        Task<bool> IsGrantedAsync(string permissionName);
        //
        // 摘要:
        //     Checks if a user is granted for a permission.
        //
        // 参数:
        //   user:
        //     User to check
        //
        //   permissionName:
        //     Name of the permission
        Task<bool> IsGrantedAsync(UserIdentifier user, string permissionName);
    }
}

传入权限可判断当前用户是否拥有权限,只返回true和false,不会因权限不足抛出异常


第三种是应用在Razor视图里面吗的,有时候需要为管理员或者用户进行显示一些标签时可以用到


直接在视图里调用IsGranted方法即可,无需引用任何命名空间,传入权限名称返回true和false

@if (IsGranted(PermissionNames.Pages_Blogs_Admin))
{

}


ABP的权限就记录到这里




评论

用户默认头像
发表我的评论
取消评论
看不清,点击刷新验证码