Compare commits

...
2 Commits
Author SHA1 Message Date
xrain 239cd8bcbb fix error when exception response has started 2022-09-14 04:56:21 +08:00
xrain 62ddd6698e now simapiauth can use , for role 2022-09-02 09:47:41 +08:00
2 changed files with 23 additions and 10 deletions
+10 -4
View File
@@ -19,13 +19,16 @@ namespace SimApi.Attributes
//默认是user登录类型 //默认是user登录类型
public SimApiAuthAttribute() public SimApiAuthAttribute()
{ {
Types = new[] { "user" }; Types = new[]
{
"user"
};
} }
//只检测一种用户类型的快捷方式 //只检测一种用户类型的快捷方式
public SimApiAuthAttribute(string type) public SimApiAuthAttribute(string type)
{ {
Types = new[] { type }; Types = type.Split(",");
} }
//设定特定类型的检测 //设定特定类型的检测
@@ -37,7 +40,10 @@ namespace SimApi.Attributes
//只检测一种用户类型的快捷方式 //只检测一种用户类型的快捷方式
public SimApiAuthAttribute(string type, string url) public SimApiAuthAttribute(string type, string url)
{ {
Types = new[] { type }; Types = new[]
{
type
};
new HttpPostAttribute(url); new HttpPostAttribute(url);
} }
@@ -50,7 +56,7 @@ namespace SimApi.Attributes
throw new SimApiException(401); throw new SimApiException(401);
} }
//检测用户类型 //检测用户类型
if (Types.Intersect(loginInfo.Type).Count() == 0) if (!Types.Intersect(loginInfo.Type).Any())
{ {
throw new SimApiException(403); throw new SimApiException(403);
} }
+8 -1
View File
@@ -14,6 +14,7 @@ namespace SimApi.Middlewares
public class SimApiExceptionMiddleware public class SimApiExceptionMiddleware
{ {
private RequestDelegate Next { get; } private RequestDelegate Next { get; }
private ILogger<SimApiExceptionMiddleware> Log { get; } private ILogger<SimApiExceptionMiddleware> Log { get; }
public SimApiExceptionMiddleware(RequestDelegate next, ILogger<SimApiExceptionMiddleware> log) public SimApiExceptionMiddleware(RequestDelegate next, ILogger<SimApiExceptionMiddleware> log)
@@ -35,7 +36,10 @@ namespace SimApi.Middlewares
await Next(context); await Next(context);
if (context.Response.StatusCode != 200) if (context.Response.StatusCode != 200)
{ {
if (!new[] {301, 302}.Contains(context.Response.StatusCode)) if (!new[]
{
301, 302
}.Contains(context.Response.StatusCode))
{ {
throw new SimApiException(context.Response.StatusCode); throw new SimApiException(context.Response.StatusCode);
} }
@@ -69,10 +73,13 @@ namespace SimApi.Middlewares
/// <param name="context"></param> /// <param name="context"></param>
/// <param name="response"></param> /// <param name="response"></param>
private void ErrorResponse(HttpContext context, SimApiBaseResponse response) private void ErrorResponse(HttpContext context, SimApiBaseResponse response)
{
if (!context.Response.HasStarted)
{ {
context.Response.StatusCode = 200; context.Response.StatusCode = 200;
context.Response.Headers.Add("Content-Type", "application/json"); context.Response.Headers.Add("Content-Type", "application/json");
context.Response.WriteAsync(response.ToString()); context.Response.WriteAsync(response.ToString());
} }
} }
}
} }