Comments (4)
I'll send a PR to add this into readme.
from authorization.
AuthorizationValidationRule
is the "framework" code and does not need to be modified. That rule checks all of the Graph Types in the query to see if they have authorization policies applied to them, which is why CheckAuth
is called so many times.
You can instead add your own authorization requirements to the framework to extend it. Create your own IAuthorizationRequirement
class and add that requirement to your policy.
public class UserExistsRequirement : IAuthorizationRequirement
{
public Task Authorize(AuthorizationContext context)
{
// this is the authenticated user
var user = context.User;
// check DB here
return Task.CompletedTask;
}
}
public static class AuthorizationPolicyBuilderExtensions
{
public static AuthorizationPolicyBuilder UserExists(this AuthorizationPolicyBuilder builder)
{
builder.AddRequirement(new UserExistsRequirement());
return builder;
}
}
// build your policy
var authSettings = new AuthorizationSettings();
authSettings.AddPolicy("UserExists", p => p.RequireAuthenticatedUser().UserExists());
// apply the policy to the graph type
/// <summary>
/// CLR type to map to the 'Query' graph type.
/// </summary>
public class Query
{
/// <summary>
/// Resolver for 'Query.viewer' field.
/// </summary>
[GraphQLAuthorize(Policy = "UserExists")]
public User Viewer() => new User { Id = Guid.NewGuid().ToString(), Name = "Quinn" };
}
from authorization.
Ok thanks for adding this to the readme!
Reason why we copied AuthorizationValidationRule intially was because we needed to change the error message. We thought it could be a good place to change some things about validation as well. Thanks for clearing this up.
from authorization.
we needed to change the error message
I already do this, will be in v4.
from authorization.
Related Issues (20)
- Checking for a valid JWT and integrating with a Refresh-Token-Workflow HOT 10
- UNAUTHENTICATED error code HOT 3
- ETA for v4? HOT 18
- IAuthorizationRequirement is not sent the same variable names as those in IResolveField context HOT 2
- ClaimsPrincipal not retrived trying to use AuthorizeWith in GraphQL queries HOT 6
- Any example for schema first auth example? HOT 2
- How to get a status code 401 when not authorized HOT 6
- Move GraphQLAuthExtensions from Harness into new package HOT 6
- Add docs about IAuthorizationSkipCondition and DI
- Method 'ValidateAsync' in type 'GraphQL.Authorization.AuthorizationValidationRule' from assembly 'GraphQL.Authorization, Version=4.0.0.0 HOT 7
- Question: AuthorizeWithPolicy is being ignored HOT 10
- GraphQL .net authorization with JWT token HOT 7
- AddGraphQLAuth no longer works after switching to Middleware HOT 1
- Return 401 and 403 status code HOT 5
- Is this library still relevant with GraphQL 7+ HOT 22
- How to read graphql query from authorization requirement ?
- Graphql Authorization not working HOT 4
- Faulty reference HOT 6
- How to login user and return token and id ? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from authorization.