cra*_*isy 7 authentication session-cookies servicestack
在servicestack中是否有替代会话功能的插件?在某些情况下,我无法使用cookie来匹配我的服务实现中的授权会话.是否有可能使用请求的http标头中的令牌解析会话?如果浏览器阻止cookie,首选解决方案是什么?
我正在使用没有内置身份验证和会话提供程序的ServiceStack.
我使用一个属性作为请求过滤器来收集cookie,请求头或字符串参数的用户信息(id和token).您可以在用户登录后提供此信息.您将新cookie添加到响应中,并在呈现视图时在客户端上注入id和令牌信息,因此您可以使用http标头和查询链接参数.
public class AuthenticationAttribute : Attribute, IHasRequestFilter
{
public void RequestFilter(IHttpRequest request, IHttpResponse response, object dto)
{
var userAuth = new UserAuth { };
if(!string.IsNullOrWhiteSpace(request.GetCookieValue("auth"))
{
userAuth = (UserAuth)request.GetCookieValue("auth");
}
else if (!string.IsNullOrEmpty(request.Headers.Get("auth-key")) &&
!string.IsNullOrEmpty(request.Headers.Get("auth-id")))
{
userAuth.Id = request.Headers.Get("id");
userAuth.Token = request.Headers.Get("token");
}
authenticationService.Authenticate(userAuth.Id, userAuth.token);
}
public IHasRequestFilter Copy()
{
return new AuthenticationAttribute();
}
public int Priority { get { return -3; } } // negative are executed before global requests
}
Run Code Online (Sandbox Code Playgroud)
如果用户未获得授权,我会在此时重定向他.
我的项目支持SPA.如果用户使用xmlhttprequests消耗API,则使用标头完成身份验证.我在加载页面时在AngularJS上注入了这些信息,并在所有请求(部分视图,api消费等)上重用它.ServiceStack对于这类内容非常强大,您可以轻松配置AngularJS应用程序和ServiceStack视图引擎并行工作,验证每个请求,全球化您的应用程序等.
如果你没有cookie并且javascript没有调用请求,你可以支持没有cookie的身份验证,如果你总是生成传递id和token作为查询参数的链接,并通过表单上的隐藏输入传递它们,例.
| 归档时间: |
|
| 查看次数: |
3334 次 |
| 最近记录: |