asp.net-mvc – 跨应用程序进行表单身份验证的ServiceStack失败
我有一个在api.mydomain.com上运行API的ServiceStack项目.同一解决方案中的管理项目托管在admin.mydomain.com.登录/注销已由管理应用程序处理,但我想确保在我的api调用上对用户进行身份验证(有时也检查权限).我正在使用
forms authentication across projects,因此我的api项目可以使用auth cookie.
这是api项目中的web.config身份验证标记: <authentication mode="Forms"> <forms protection="All" loginUrl="home/denied" slidingExpiration="true" timeout="60" defaultUrl="home/denied" path="/" domain="mydomain.com" name=".myAuth"></forms> </authentication> 基于此Authentication and authorization post,我在服务方法中添加了[Authenticate]属性,期望它根据IsAuthenticated的值通过/失败.但是,无论是否存在身份验证cookie,它都会每次重定向到“home / denied”. (我通过继承AuthenticateAttribute并检查OriginalRequest来确认这一点…当我使用管理应用程序登录时,cookie集已经存在且req.OriginalRequest.IsAuthenticated为真.) 为什么我的请求被重定向,以及如何正确使用管理应用程序中现有的身份验证凭据? 编辑:这是我提出的解决方案.它只需要一个IPrincipal标识来通过身份验证. public class AuthenticateAspNetAttribute : RequestFilterAttribute { public override void Execute(IHttpRequest req,IHttpResponse res,object requestDto) { SessionFeature.AddSessionIdToRequestFilter(req,res,null); //Required to get req.GetSessionId() using (var cache = req.GetCacheClient()) { var sessionId = req.GetSessionId(); var session = sessionId != null ? cache.GetSession(sessionId) : null; var originalRequest = (System.Web.HttpRequest) req.OriginalRequest; var identity = originalRequest.RequestContext.HttpContext.User.Identity; if (!identity.IsAuthenticated) AuthProvider.HandleFailedAuth(new BasicAuthProvider(),session,req,res); } } } 解决方法
在
Authentication and autorization post你引用它读取:
这意味着它完全独立,与ASP.NET现有的身份验证提供程序无关.即客户端需要显式调用/ auth服务以使用ServiceStack Web服务进行身份验证. 有关MVC网站的示例,请参阅SocialBootstrapApi示例演示项目,该网站在MVC控制器和ServiceStack Web服务之间使用和共享ServiceStack的身份验证提供程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.Net MVC 4窗体与2提交按钮/操作
- asp.net-core-2.1 – 配置HttpClientFactory以使用当前请求
- asp.net-mvc – ASP.NET MVC框架中的MVVM和ModelBinders
- asp.net-mvc – 通过NuGet升级到Microsoft.AspNet.Mvc 5.0.
- asp.net-mvc – 如何使用图像呈现动作链接?
- asp.net – 为什么在调用Application_Error()时Response.St
- asp.net – System.DirectoryServices – 服务器不可操作
- httphandler – AjaxToolkit IIS7 Asp.Net 4.0:未定义Sys;
- asp.net-mvc – 我可以在_Layout.cshtml中有条件地渲染部分
- ASP.NET知识点总结4
- MVC中TempData、ViewData和ViewBag的区别
- asp.net-mvc – ASP.NET MVC项目架构
- asp.net-mvc – F#Asp.Net CodeDom ProviderOpti
- asp.net – Web.HttpContext.Current.User.Ident
- asp.net – 使用MvcBuildViews构建Razor = true失
- asp.net-mvc – 在Umbraco 7中建立联系表格
- asp.net-mvc-3 – @ Html.DropDownList width
- ASP.NET动态创建控件和回发
- asp.net-mvc – ASP.NET MVC 3多语言SEO
- asp.net – 使用Using语句的SQLConnection,从里面