在SignOut()调用之后使用此方法重定向到'... login.aspx?ReturnUrl =%2fmydomainname%2flogout.aspx',以便用户无法再次重新登录,因为成功登录将返回到注销页面.登录页面在webconfig中设置,应用程序成功获取该页面.为什么ReturnURL会卡在URL的尾部?
我刚刚注意到使用ASP.NET应用程序中的表单身份验证访问CSS文件时出现问题.
在我登录之前,我没有使用我在登录页面中设置的任何样式,因为IIS似乎阻止登录页面访问此文件.
有一个简单的解决方案吗?
我正在尝试使用FormsAuthentication(使用ASP.NET MVC2)并且它运行得相当好.
但是,我无法弄清楚如何处理的一个案例是验证服务器上的用户身份,以确保从服务器的角度来看它仍然有效.
例如.
我可以发现这很好,但处理它的正确方法是什么?呼吁FormsAuthentication.SignOut在OnAuthorization对OnActionExecuting事件太晚影响当前请求.
或者,我希望能够在删除用户(或重新创建数据库)时调用FormsAuthentication.InvalidateUser(...),以使给定(或所有)用户的所有票证无效.但我找不到一个API来做到这一点.
如果会话已过期且用户单击指向另一个webform的链接,则asp.net身份验证会自动将用户重定向到登录页面.
但是,有些用户没有点击指向其他网络表单的链接.例如:在gridviews中编辑链接,当使用带有文本框的AutoCompleteExtender并且应用程序尝试获取信息时,基本上,在每种情况下,当回发完成并且事件不是由asp.net身份验证自动处理时.
处理这些异常的最佳方法是什么?
更新:我刚刚修改了问题标题:表单身份验证超时,而不是初始会话超时.谢谢你让我意识到这种差异.
更新:我刚刚针对我面临的具体问题创建了一个新问题:如何使用UpdatePanel处理因过期身份验证票据而导致的异常?.令人惊讶的是,我没有找到关于它的更多信息.我将衷心感谢您的帮助.
我想在我的网站上手动实现基于表单的身份验证.
我正在使用Web.config文件进行数据存储
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx"
name=".ASPXAUTH"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="~/Admin/OrderHistory.aspx"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false"
>
<credentials passwordFormat="Clear">
<user name="Admin" password="adm123$"/>
<user name="Administrator" password="adm234%"/>
</credentials>
</forms>
</authentication>
<authorization>
<deny users ="?" />
<allow users = "*" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
Login.aspx在根目录中有一个页面使用ASP.NET登录控件来获取用户名和密码.
一切正常,但当用户logged in手动转到login.aspx页面时,它不会将用户重定向到defaultUrl页面.
我想将用户重定向到特定页面/ defaultUrl页面,如果他已登录并手动登录到login.aspx页面
怎么做?
if (FormsAuthentication.Authenticate(LoginUser.UserName, LoginUser.Password))
{
FormsAuthentication.RedirectFromLoginPage(LoginUser.UserName, true);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Facebook C#SDK,我通过他们的Facebook帐户验证用户身份.一旦我执行了所有检查以"验证"它们,我就打电话FormsAuthentication.SetAuthCookie(email, false);
执行该调用是否允许我访问User.Identity.IsAuthenticated我的操作?如果我没有打电话怎么办?
我有一些操作将根据其身份验证状态返回不同的视图,并希望确保User.Identity.IsAuthenticated在MVC 4应用程序中可靠.
我想要ASP.NET中的表单身份验证的好处.我希望它能继续授权我这样,但是我的情况有一点不同; 我想对一个简单的Web服务(特别是由客户端提供)进行身份验证.
我有我的代码来查看Web位置并查看它们是否应该被授权,但是如何在ASP.NET中设置cookie [?]或授权标志,他们知道当前用户已获得授权.
基本上...
if (HttpContext.Current.User.Identity.IsAuthenticated)
// we're all good
//Other wise...
bool success = CheckClientsWebService(string username, string password);
if (success)
// Somehow tell .NET that they're authorized
Run Code Online (Sandbox Code Playgroud)
*注意:这是一个相当简单的服务,不处理组或角色.只需检查用户是否可以查看该网站.
我正在按照本教程创建一个带有外部身份验证的简单MVC 5应用程序.它的工作很好,但是,如果我改变authentication mode="None"到authentication mode="Forms"它停止工作.
我搞砸了:
await HttpContext.GetOwinContext().Authentication.GetExternalLoginInfoAsync()
Run Code Online (Sandbox Code Playgroud)
我正在阅读很多关于在重定向上禁止FormsAuthentication的内容.我不知道这是不是正确的路径,但我试图安装这个nuget数据包,问题仍然存在.
那么,为什么每次更改身份验证模式时我都会变为空?
authentication asp.net-mvc forms-authentication owin asp.net-mvc-5
我在我的MVC网络应用程序中运行HangFire,但每当我尝试导航到http:// MyApp/hangfire时,它会将我重定向到我的应用程序的登录页面,就好像我没有登录一样.
我没有明确配置任何授权要求...例如我在web.config中有以下内容,但后来试图让它工作.
<location path="hangfire">
<system.web>
<authorization>
<allow roles="Administrator" />
<deny users="*" />
</authorization>
</system.web>
Run Code Online (Sandbox Code Playgroud)
理论上,这就是我想要的,当我登录我的主Web应用程序时,我将以Administrator角色登录,因此该规则应该有效.
但是,无论我是否在web.config中配置了它,每当我尝试导航到http:// MyApp/hangfire时,它都会将我重定向到我在web.config中配置的应用程序登录页面:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="960" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
当我发布到我的主机时,它不会在我的本地计算机上执行此操作.HangFire是否无法识别我的主应用程序在登录时提供的身份验证Cookie?我一般认为,hangfire应用程序不需要身份验证,那么其他配置可能会认为它有什么作用?
更新1:
我根据hangfire文档添加了授权过滤器,但同样的事情发生了.这是我在Startup.cs中的代码:
using Hangfire;
using Hangfire.Logging;
using Hangfire.Dashboard;
using Hangfire.SqlServer;
using Microsoft.Owin;
using OTIS.Web.AppCode;
using OTISScheduler.AppServ;
using Owin;
using System.Web.Security;
[assembly: OwinStartup(typeof(OTIS.Web.App_Start.Startup))]
namespace OTIS.Web.App_Start
{
public class Startup
{
public void Configuration(IAppBuilder app) {
app.UseHangfire(config => {
config.UseSqlServerStorage("DefaultConnection");
config.UseServer();
//Dashboard authorization
config.UseAuthorizationFilters(new AuthorizationFilter
{
Users = …Run Code Online (Sandbox Code Playgroud) 我使用表单身份验证有一个相对简单的基于WebForms的站点:
<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="secure/home.aspx" name=".AdminSite" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
由于未明确提及,slidingExpiration默认情况下设置为true,因此只要用户仍在网站上导航,用户就不会被注销.
但是,我希望特定页面不会增加到期时间.这是可能的,无论是web.config在代码内还是代码中?唯一的建议,我见过一提的设置slidingExpiration到false,这将适用侧宽.
使用以下身份设置身份验证Cookie:
FormsAuthentication.RedirectFromLoginPage(username, False)
Run Code Online (Sandbox Code Playgroud)
因此改变认证cookie本身是不切实际的.