Questions tagged «forms-authentication»

9
ASP.NET MVC-设置自定义IIdentity或IPrincipal
我需要做一些相当简单的事情:在我的ASP.NET MVC应用程序中,我想设置一个自定义的IIdentity / IPrincipal。哪个更容易/更合适。我想扩展默认值,以便可以调用诸如User.Identity.Id和User.Identity.Role。没什么花哨的,只是一些额外的属性。 我读了无数的文章和问题,但是我觉得自己变得比实际困难。我以为会很容易。如果用户登录,我想设置一个自定义的IIdentity。所以我想,我会实施Application_PostAuthenticateRequest在global.asax中。但是,这是在每个请求上都调用的,我不想在每个请求上都对数据库进行调用,这会从数据库请求所有数据并将其放入自定义IPrincipal对象。这似乎也非常不必要,缓慢并且在错误的位置(在此处进行数据库调用),但我可能是错的。还是这些数据从哪里来? 因此,我认为,每当用户登录时,我都可以在会话中添加一些必要的变量,并将其添加到Application_PostAuthenticateRequest事件处理程序中的自定义IIdentity中。但是,我Context.Session在null那里,所以那也不是路。 我已经为此工作了一天,我感觉自己缺少一些东西。这应该不难做,对吧?我对与此附带的所有(半)相关的东西也感到困惑。MembershipProvider,MembershipUser,RoleProvider,ProfileProvider,IPrincipal,IIdentity,FormsAuthentication...。我是唯一一个谁发现这一切非常混乱? 如果有人可以告诉我一个简单,优雅,有效的解决方案,以在IIdentity上存储一些额外的数据而又不引起任何额外的麻烦,那就太好了!我知道在SO上也有类似的问题,但是如果我需要的答案在那里,我一定会忽略。


23
FormsAuthentication.SignOut()不会注销用户
我把头砸得太久了。使用FormsAuthentication.SignOut注销后,如何防止用户浏览网站的页面?我希望这样做: FormsAuthentication.SignOut(); Session.Abandon(); FormsAuthentication.RedirectToLoginPage(); 但事实并非如此。如果直接输入URL,我仍然可以浏览到该页面。我已经有一段时间没有使用过自助式安全了,所以我忘记了为什么这不起作用。

4
如何在ASP.NET MVC中重定向到动态登录URL
我正在创建一个多租户网站,为客户托管页面。URL的第一段将是标识客户端的字符串,该字符串使用以下URL路由方案在Global.asax中定义: "{client}/{controller}/{action}/{id}" 使用/ foo / Home / Index之类的URL可以正常工作。 但是,当使用[Authorize]属性时,我想重定向到也使用相同映射方案的登录页面。因此,如果客户端是foo,则登录页面将是/ foo / Account / Login,而不是web.config中定义的固定的/ Account / Login重定向。 MVC使用HttpUnauthorizedResult返回401未经授权状态,我认为这会使ASP.NET重定向到web.config中定义的页面。 那么,有谁知道如何重写ASP.NET登录重定向行为?还是通过创建自定义授权属性在MVC中进行重定向会更好? 编辑-答案:在深入研究.Net源代码之后,我认为自定义身份验证属性是最佳解决方案: public class ClientAuthorizeAttribute: AuthorizeAttribute { public override void OnAuthorization( AuthorizationContext filterContext ) { base.OnAuthorization( filterContext ); if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult ) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary …



4
为什么<deny users =“”?/>是否包含在以下示例中?
该?通配符表示未经授权的用户,同时*代表了所有用户,认证和未。我的书显示了以下URL授权示例: &lt;authorization&gt; &lt;deny users="?" /&gt; &lt;allow users="dan,matthew" /&gt; &lt;deny users="*" /&gt; &lt;/authorization&gt; 但是上面的代码不具有与以下相同的效果: &lt;authorization&gt; &lt;allow users="dan,matthew" /&gt; &lt;deny users="*" /&gt; &lt;/authorization&gt; 还是作者&lt;deny users="?" /&gt;出于某种原因也加入了 规则?

12
表单身份验证:禁用重定向到登录页面
我有一个使用ASP.NET表单身份验证的应用程序。在大多数情况下,它工作得很好,但是我试图通过.ashx文件添加对简单API的支持。我希望ashx文件具有可选的身份验证(即,如果您不提供Authentication标头,则它只能匿名运行)。但是,根据您的操作,我希望在某些条件下要求身份验证。 我认为,如果未提供所需的身份验证,那么用状态码401进行响应将是一个简单的问题,但是似乎表单身份验证模块正在拦截该响应并以重定向到登录页面的方式进行响应。我的意思是,如果我的ProcessRequest方法如下所示: public void ProcessRequest(HttpContext context) { Response.StatusCode = 401; Response.StatusDescription = "Authentication required"; } 然后,而不是像我期望的那样在客户端上获得401错误代码,实际上是获得302重定向到登录页面的信息。 对于正常的HTTP流量,我可以看到它如何有用,但是对于我的API页面,我希望401进行不修改的操作,以便客户端调用程序可以通过编程方式对其进行响应。 有什么办法吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.