-
Notifications
You must be signed in to change notification settings - Fork 22
请求安全验证
Henry edited this page Oct 12, 2019
·
1 revision
组件是基于接口的方式来描述通讯交互,在面对请求的可靠性验证的时候,在每个方法行为都添加一个凭证参数那在设计和规划上就非常麻烦了。组件的通讯协议是支持头部附加信息,可以通过头部附加信息结合过虑器即可完成相关请求有效性验证。
public class Token : ActionFilterAttribute
{
public override bool Executing(EventCenter center, EventActionHandler handler, IEventInput input, IEventOutput output)
{
input.Properties.TryGetValue("token", out string token);
if (token == "admin")
{
return base.Executing(center, handler, input, output);
}
else
{
output.EventError = EventError.InnerError;
output.Data = new object[] { "操作用户无效!" };
return false;
}
}
}
以上过虑器是验证头部是否包括token
信息,并检测值是否为admin
;如果是则继续执行,否则返回一个不可操作的提示。实际应用中验证方式会相对复杂些如签要加上时间和key
来进行哈希对比等。
[Token]
[Service(typeof(IUserService))]
public class UserService : IUserService
可以把过虑器添加到控制器或方法上。
var api = client.Create<IUserService>();
((IHeader)api).Header["token"] = "admin";
所有创建的接口代理都会自动实现IHeader
接口,通过Header
属性添加相关值即可;添加的头信息会附加到该接口的所有请求方法中。