当前页面的脚本发生错误没有权限 详解ABP框架的参数有效性验证和权限验证

09/11 15:10:29 来源网站:辅助卡盟网

IPermissionDefinitionContext 有方法去获取和创建权限。

一个权限有以下属性:

一个权限可以有父权限和子权限。当然,这不会影响权限检查,它只是在UI层对权限归类有好处。创建authorizationprovider之后,我们应该在模块的PreIntialize方法对它进行注册。如下:

Configuration.Authorization.Providers.Add()

authorizationprovider会自动注册到依赖注入系统中。因此,authorization provider可以注入任何依赖(像是Repository)从而使用其他资源去创建权限定义。

检查权限

1.使用AbpAuthorize特性(Using AbpAuthorize attribute)

AbpAuthorize(AbpMvcAuthorize 对应 MVC Controllers and AbpApiAuthorize 对应 Web API Controllers)特性是最简单和常用的方法去检查权限。请考虑如下application service方法:

[AbpAuthorize("Administration.UserManagement.CreateUser")]
public void CreateUser(CreateUserInput input)
{
  //A user can not execute this method if he is not granted for "Administration.UserManagement.CreateUser" permission.
}

没有获得“Administration.UserManagement.CreateUser”权限的用户不能够调用CreateUser。

AbpAuthorize 特性也检查当前用户是否登录 (使用 IAbpSession.UserId)。因此,如果我们将某个方法声明为AbpAuthorize 特性,它至少会检查用户是否登录。代码如下: [AbpAuthorize]

public void SomeMethod(SomeMethodInput input)
{
  //A user can not execute this method if he did not login.
}

2.AbpAuthorize属性说明(AbpAuthorize attribute notes)

Abp使用动态方法拦截进行权限验证。因此,使用AbpAuthorize特性的方法会有些限制。如下:

不能应用于私有(private)方法

不能应用于静态(static)方法

不能应用于非注入(non-injected)类(我们必须用依赖注入)。

此外,

AbpAuthorize特性可以应用于任何的Public方法,如果此方法被接口调用(比如在Application Services中通过接口调用)

方法是虚(virtual)方法,如果此方法直接被类引用进行调用(像是ASP.NET MVC 或 Web API 的控制器)。

方式是虚(virtual)方法,如果此方法是protected。

注意:有三种AbpAuthorize 特性:

(1)在应用程序服务中(application layer),我们使用Abp.Authorization.AbpAuthorize;

(2)在MVC控制器(web layer)中,我们使用Abp.Web.Mvc.Authorization.AbpMvcAuthorize;

SQL Error: select * from ***_ecms_game where title like '%当前页面的脚本发生错误没有权限 详解ABP框架的参数有效性验证和权限验证%' or INSTR('当前页面的脚本发生错误没有权限 详解ABP框架的参数有效性验证和权限验证',title)>0 order by newstime desc limit 10

游戏推荐

更多>
    SQL Error: select * from ***_ecms_game where titlepic<>'' order by newstime desc limit 6