mirror of https://github.com/abpframework/abp.git
1 changed files with 75 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||||
|
# Blazor UI: Authorization |
||||
|
|
||||
|
Blazor applications can use the same authorization system and permissions defined in the server side. |
||||
|
|
||||
|
> This document is only for authorizing on the Blazor UI. See the [Server Side Authorization](../../Authorization.md) to learn how to define permissions and control the authorization system. |
||||
|
|
||||
|
## Basic Usage |
||||
|
|
||||
|
> ABP Framework is **100% compatible** with the Authorization infrastructure provided by the Blazor. See the [Blazor Security Document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security/) to learn all authorization options. This section **only shows some common scenarios**. |
||||
|
|
||||
|
### Authorize Attribute |
||||
|
|
||||
|
`[Authorize]` attribute can be used to show a page only to the authenticated users. |
||||
|
|
||||
|
````csharp |
||||
|
@page "/" |
||||
|
@attribute [Authorize] |
||||
|
|
||||
|
You can only see this if you're signed in. |
||||
|
```` |
||||
|
|
||||
|
The `[Authorize]` attribute also supports role-based or policy-based authorization. For example, you can check permissions defined in the server side: |
||||
|
|
||||
|
````csharp |
||||
|
@page "/" |
||||
|
@attribute [Authorize("MyPermission")] |
||||
|
|
||||
|
You can only see this if you have the necessary permission. |
||||
|
```` |
||||
|
|
||||
|
### AuthorizeView |
||||
|
|
||||
|
`AuthorizeView` component can be used in a page/component to conditionally render a part of the content: |
||||
|
|
||||
|
````html |
||||
|
<AuthorizeView Policy="MyPermission"> |
||||
|
<p>You can only see this if you satisfy the "MyPermission" policy.</p> |
||||
|
</AuthorizeView> |
||||
|
```` |
||||
|
|
||||
|
### IAuthorizationService |
||||
|
|
||||
|
`IAuthorizationService` can be injected and used to programmatically check permissions: |
||||
|
|
||||
|
````csharp |
||||
|
public partial class Index |
||||
|
{ |
||||
|
protected override async Task OnInitializedAsync() |
||||
|
{ |
||||
|
if (await AuthorizationService.IsGrantedAsync("MyPermission")) |
||||
|
{ |
||||
|
//... |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
```` |
||||
|
|
||||
|
If your component directly or indirectly inherits from the `AbpComponentBase`, `AuthorizationService` becomes pre-injected and ready to use. If not, you can always [inject](../../Dependency-Injection.md) the `IAuthorizationService` yourself. |
||||
|
|
||||
|
`IAuthorizationService` can also be used in the view side where `AuthorizeView` component is not enough. |
||||
|
|
||||
|
There are some useful extension methods for the `IAuthorizationService`: |
||||
|
|
||||
|
* `IsGrantedAsync` simply returns `true` or `false` for the given policy/permission. |
||||
|
* `CheckAsync` checks and throws `AbpAuthorizationException` if given policy/permission hasn't granted. You don't have to handle these kind of exceptions since ABP Framework automatically [handles errors](Error-Handling.md). |
||||
|
* `AuthorizeAsync` returns `AuthorizationResult` as the standard way provided by the ASP.NET Core authorization system. |
||||
|
|
||||
|
> See the [Blazor Security Document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security/) to learn all authorization options |
||||
|
|
||||
|
## See Also |
||||
|
|
||||
|
* [Authorization](../../Authorization.md) (server side) |
||||
|
* [Blazor Security](https://docs.microsoft.com/en-us/aspnet/core/blazor/security/) (Microsoft documentation) |
||||
|
* [ICurrentUser Service](CurrentUser.md) |
||||
|
|
||||
Loading…
Reference in new issue