Comments (15)
Unfortunately there is no such possibility.
from authorization.
Instead of making IAuthorizationRequirement
DI-dependent, use in as simple class to hold requirement-related information.
And then create a DI-dependent handler (HomeAccessHandler : AuthorizationHandler<HomeAccessRequirement>
) to process the requirement.
This should help you.
P.S. Note the "Handler registration" section.
from authorization.
This is core auth package, for ASP.NET Core other one exists.
from authorization.
@sungam3r my bad, missed repo name.
from authorization.
@Brandon2255p how about that?
services.AddGraphQLAuth((_, s) =>
{
_.AddPolicy(GraphQLPolicyNames.HomeAccess, policy =>
{
policy.AddRequirement(s.GetRequiredService<BasicAccessRequirement>());
policy.AddRequirement(s.GetRequiredService<HomeAccessRequirement>());
});
};
You should of cource configure your requirements in DI-container.
from authorization.
Closed due to lack of feedback.
from authorization.
i tried your solution @sungam3r for a similar issue i'm having but i get System.InvalidOperationException: 'No service for type 'CoreAPI.HomeAccessRequirement' has been registered.'
from authorization.
services.AddSingleton<IAuthorizationRequirement>(x => new HomeAccessRequirement(x.GetRequiredService<IClient>()) );
`services.AddGraphQLAuth((_, s) =>
{
_.AddPolicy("UserRolePolicy", p => p.AddRequirement(s.GetRequiredService<HomeAccessRequirement>()));
});`
the above did not work, I am relatively new to C# is my error glaringly obvious?
from authorization.
I see how to do it via what @Ekkeir is saying using handlers in Asp.net core but i cannot find an example or how to create a DI handler class for core auth @sungam3r
from authorization.
AddGraphQLAuth
is not a part of this project (maybe it is in the server project?), but for using DI it should look closer to this:
services.AddSingleton<HomeAccessRequirement>();
services.AddGraphQLAuth((_, s) =>
{
_.AddPolicy("UserRolePolicy", p => p.AddRequirement(s.GetRequiredService<HomeAccessRequirement>()));
});
If you register HomeAccessRequirement
as IAuthorizationRequirement
, then DI does not have a registration of HomeAccessRequirement
, only IAuthorizationRequirement
.
Also just noticed that you may be referencing #54 (comment) for that extension.
from authorization.
thanks joe, not exactly what i was looking for as i have another service that needs to be injected into HomeAccessRequirement and the above did not work. I am attempting the other route which is to make my injected service available to httpcontextaccessor
from authorization.
If you have another service that needs to be injected, that other service just needs to be also registered with DI. If it doesn't work this way, then it won't work the other way either.
from authorization.
services.AddTransient<HomeAccessRequirement>();
services.AddTransient<IClient, MyClient>();
public class HomeAccessRequirement : IAuthorizationRequirement
{
private readonly IClient client;
public HomeAccessRequirement(IClient client)
{
this.client = client;
}
public Task Authorize(AuthorizationContext context)
{
...
}
}
services.AddGraphQLAuth((_, s) =>
{
_.AddPolicy("UserRolePolicy", p => p.AddRequirement(s.GetRequiredService<HomeAccessRequirement>()));
});
from authorization.
thanks! @joemcbride i have been going in circles over and over with this. Seems like I need to look into why I can't dependency inject this...
from authorization.
@mmmikeal Here's a full working example that uses injection in a IAuthorizationRequirement
.
from authorization.
Related Issues (20)
- Checking for a valid JWT and integrating with a Refresh-Token-Workflow HOT 10
- UNAUTHENTICATED error code HOT 3
- In AuthorizationValidationRule.cs the method CheckAuth is called multiple times. Why? HOT 4
- 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.