标签: forms-authentication

如何在ASP.NET中运行时更改FormsCookieName

我们希望FormsCookiePath的FormsCookieName更改我们的应用程序的每个实例.我们有一个应用程序,它在1个服务器/域名上有多个实例.因此,我们只能同时在一个应用程序中工作,因为cookie会相互覆盖.对于Sessions顺便说一句.

有没有办法动态地,例如在Global.asax Application_Start中,更改此名称?这将是有用的,因为我们在每个应用程序中保留许可证名称,可以用作CookieName的基础.

我们已经使用Web.config和额外文件来覆盖外部文件中的Web.config值,使用: <appSettings file="Web.AppSettings.Config">

但这需要手动操作,这些操作可能会被遗忘并且是多余的,因为可以从数据库中检索设置.

谢谢.

asp.net cookies forms-authentication

5
推荐指数
1
解决办法
3071
查看次数

App_Data/ASPNETDB.MDF到Sql Server 2005(或08)

我一直在开发一个需要帐户登录功能的ASP.NET WebForms应用程序(例如注册新用户,更改密码,恢复密码,配置文件,角色等).为此,我将FormsAuthentication与默认数据存储一起使用,令我惊讶的是,它是App_Data中的MDF文件.什么时候实际部署这个应用程序.住在网上,我将使用像GoDaddy或其他廉价公司这样的共享主机.

为了提高效率,我想从这个MDF切换到实际的SQL Server 2005或2008(他们正确的思想使用平面文件?).但是,使用共享主机,我将无法运行任何程序,如aspnet_regsql.exe.我只需要一个SQL Server数据库的登录名和密码,以及一个FTP帐户到域根目录.没有MSTSC远程桌面,没有控制台访问,没有在IIS中修补等等.

我不需要从ASPNETDB.MDF转移任何用户帐户(站点将从零用户开始),但我想如何:

1)当我使用Web站点管理工具开始使用FormsAuthentication时,轻松创建Visual Studio在ASPNETDB.MDF中自动创建的表,过程等?

2)让SQL成员资格提供程序使用我给它的连接字符串,而不是使用它现在连接到此ASPNETDB.MDF的任何内容.天啊,我甚至没有在web.config中看到任何与此MDF的连接字符串; 怎么到底是我的应用程序.甚至找到了吗?Machine.config中?如果是这样的话那将是一个糟糕的决定.这个幕后故事让我疯狂.

任何经过此次迁移的人的帮助都将非常非常感谢!

asp.net forms-authentication

5
推荐指数
1
解决办法
7693
查看次数

ASP.NET Forms身份验证的授权安全性

我在ASP.NET MVC网站中使用Forms身份验证,我在AuthCookie中存储用户帐户登录名,如下所示:

FormsAuthentication.SetAuthCookie(account.Login, false);
Run Code Online (Sandbox Code Playgroud)

我想问一下,如果有一种可能性,即用户在客户端会以某种方式管理AuthCookie改变自己的登录名,因此他将例如冒充有人用更高的权限和授权做更多的动作比他通常应该有.另外最好保存在此cookie用户帐户登录名或用户帐号ID中吗?

asp.net security asp.net-mvc authorization forms-authentication

5
推荐指数
1
解决办法
744
查看次数

在mvc中进行身份验证并重定向到silverlight,如何访问经过身份验证的用户?

我是silverlight的新手,正在研究mvc中托管的silverlight应用程序.用户将登录aspx页面/ LogOn,并将被重定向到silverlight应用程序或其他视图.要在silverlight中访问已登录用户,请在mvc中添加身份验证服务.

app.xaml.cs基于RIA服务中的启用身份验证进行了修改

    public App()
    {
        this.Startup += this.Application_Startup;
        this.Exit += this.Application_Exit;
        this.UnhandledException += this.Application_UnhandledException;

        InitializeComponent();

        WebContext webcontext = new WebContext
                                    {
                                        Authentication = new FormsAuthentication()
                                    };
        this.ApplicationLifetimeObjects.Add(webcontext);
        WebContext.Current.Authentication.LoadUser().Completed += 
            (s, e) => MessageBox.Show(WebContext.Current.User.Name);
    }
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用,因为消息框显示为空

c# asp.net silverlight asp.net-mvc forms-authentication

5
推荐指数
1
解决办法
645
查看次数

Orchard CMS简单的用户注册/认证

我认为在Orchard CMS上创建简单的用户注册应该很容易吗?

我需要的是在我的测试应用程序中使用基本用户注册/身份验证需要遵循的最简单的步骤,类似于http://orchardproject.net/gallery/Users/Account/Register.我一直在扫描谷歌搜索结果,但大多数只谈到通过外部模块定制,我不认为我需要外部模块来实现简单的用户认证机制?

Orchard链接中的注册/登录/会员模块对我没有多大帮助,例如,在此设置后如何让我的用户注册/登录?我需要做什么呢?请注意,目前,我不需要像Orchard:Custom Registration字段这样的自定义.

根据我的理解,这应该是一个非常简单的实现,但我一直在努力让我的测试应用程序.我错过了什么?对此的一些指导将受到高度赞赏.

提前致谢!

authentication forms-authentication orchardcms

5
推荐指数
1
解决办法
4845
查看次数

ASP.NET MVC Windows身份验证在表单身份验证之上

我在ASP.NET MVC中开发了一个我们在内部使用的Web应用程序.现在我们希望通过互联网上的服务器提供它 - 当我们在现场做工作时,让生活更轻松.

理想情况下,我只想坚持使用Windows身份验证,以便拥有域帐户的任何人都可以登录.

问题是我已经在应用程序中使用表单身份验证.

我们对应用程序没有任何密码限制,您只需选择要登录的用户,然后提交表单.在服务器端它只是这样做 -

    FormsAuthentication.SetAuthCookie(viewModel.Username, true);
Run Code Online (Sandbox Code Playgroud)

这使用户对象(user.identity.name)在所有控制器和视图中提供用户名.

但是......当我在IIS中启用Windows身份验证时,Web应用程序开始认为user.identity.name是"ourdomain\domainuser".

我想要的是将表单身份验证与Windows身份验证结合使用,但不要以任何方式集成它们.

有没有一种简单的方法来实现这一目标?

c# iis asp.net-mvc forms-authentication windows-authentication

5
推荐指数
1
解决办法
5587
查看次数

FormsAuthenticationTicket到期

我一直在网上搜索,发现许多奇怪的答案,我几乎尝试了所有这些.我的问题是这个.我的登录页面包含:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(min), persistCookie, userid.ToString());
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);

FormsAuthentication.RedirectFromLoginPage(userName, persistCookie);
Run Code Online (Sandbox Code Playgroud)

现在min值是基于每个用户的,可以单独设置,persistCookie也是如此.

根据我的理解,此代码应该导致覆盖web.config中的默认值的可能性.这应该是30分钟.

<authentication mode="Forms">
  <forms loginUrl="~/Default/default.aspx" defaultUrl="~/User/UserMain.aspx"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)

min当前设置为120,并且persistCookie设置为太真.当我登录时,我会在30分钟时超时.(不是会话,所以设置了某个到期日期,因为如果没有设置cookie应该是基于会话的,我也不会得到120分钟,这是一种交易在这里)

我的问题是,为了简化它,我如何将值'min'作为cookie的到期日期?

这可能会变成一件简单的事情,但我现在完全陷入困境,所以任何帮助都会受到影响.

编辑:我将登录逻辑更改为:

FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(min), persistCookie, userid.ToString());
string encTicket = FormsAuthentication.Encrypt(fat);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = fat.Expiration });
Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false));
Run Code Online (Sandbox Code Playgroud)

现在它有效.但我似乎无法弄清楚为什么这会起作用,而不是前一个.故障单创建是一样的,唯一的区别是我在创建HttpCookie时添加了HttpCookie的Expires属性,而不是在创建对象之后.

如果有人有一个很好的解释我都是耳朵!:)

c# asp.net cookies forms-authentication

5
推荐指数
1
解决办法
2万
查看次数

如何从单独的.NET应用程序获取当前上下文或用户标识?

背景

我正在开发从遗留的ASP.NET表单应用程序到MVC 4应用程序的迭代迁移.

此迁移分阶段进行,一次一个部分,因此有必要同时运行旧版和新版MVC应用程序.对于某些部分,用户将被定向到新应用程序,对于尚未迁移的部分,用户将被定向回(或保留在)旧应用程序上.

在服务器上,应用程序的结构如下:

LEGACY (.NET 2.0 forms app)--
                            |--Api (new MVC 4 WebAPI)
                            |--V2 (new MVC 4)
Run Code Online (Sandbox Code Playgroud)

所以foo对遗留页面的调用就是/foo.aspx在V2上/V2/foo.

一切都在C#中,但请注意遗留应用程序在.NET 2.0上运行,V2应用程序在.NET 4.5上运行.我不确定这是否重要,但认为重要的是要注意.

问题

我无法在应用程序之间成功共享用户/身份验证状态.显然,如果用户登录对遗留应用程序,我需要抓住他们的权威性的cookie(或采取类似行动)的V2的应用程序时,V2页面被调出,使用户不会再次提示您登录.

我试过了什么

我已经设置相同authentication,并machinekey在这两个Web.config文件中的元素:

  <authentication mode="Forms">
      <forms cookieless="UseCookies" defaultUrl="~/someUrl" loginUrl="/" path="/" protection="All" timeout="240"  enableCrossAppRedirects ="true" domain="someDomain.com" requireSSL="false"  />
  </authentication>
  <machineKey validationKey="DE78CF63226. . .788658D142AB881" decryptionKey="0B97E8BA4C4EB4B4C524. . .54E4622E14168D2D5C84461FA2" validation="SHA1" decryption="AES" />
Run Code Online (Sandbox Code Playgroud)

我在V2应用程序的Global.asax中尝试了这段代码:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    string cookieName = FormsAuthentication.FormsCookieName;
    HttpCookie authCookie = Context.Request.Cookies[cookieName]; …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc forms-authentication membership-provider

5
推荐指数
1
解决办法
1345
查看次数

在客户端和wcf服务之间传递SessionSecurityToken

我使用federatedauthentication在客户端和wcf服务应用程序之间进行通信时遇到问题.

在我的客户端应用程序(带有Forms身份验证的ASP.NET MVC)上,我将用户数据传递给声明,并构建一个SessionSecurityToken:

  SessionSecurityToken sessionSecurityToken = new
 SessionSecurityToken(transformedPrincipal,
 TimeSpan.FromMinutes(tokenLifeTime)); 
 sessionSecurityToken.IsReferenceMode = true;
 FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);
Run Code Online (Sandbox Code Playgroud)

tokenLifeTime等于25分钟.

在我的服务上,我想阅读cookie并获取存储在声明中的用户数据.但是,当我在我的服务上运行以下代码时:

 SessionSecurityToken token;
 FederatedAuthentication.SessionAuthenticationModule.TryReadSessionTokenFromCookie(out token);
Run Code Online (Sandbox Code Playgroud)

令牌为空.

更新:

我注意到,如果我只是在客户端应用程序中创建一个服务,则会毫无问题地读取令牌.我也可以设置Httpcontext.Current.user,它工作正常.但是我确实希望通过服务引用来使用服务,在这种情况下,HttpContext.Current.User都是空的(但不是null!),并且上面没有读取cookie.

asp.net cookies forms-authentication token wif

5
推荐指数
0
解决办法
712
查看次数

不使用Web.Config配置表单身份验证

脚本


我已经将我的MVC应用程序配置为以传统方式使用Forms身份验证.

<authentication mode="Forms">
  <forms cookieless="UseCookies" slidingExpiration="true" timeout="1">
  </forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)

但是,我允许客户端选择他的Web应用程序如何进行身份验证(URL令牌/ Cookie),以及他的应用程序会话在到期之前应该持续多长时间(超时)


我有办法通过代码执行此操作吗?我只通过web.config看过这个的实现?

我想从数据库中读取设置并将它们应用于Global.asax - > OnApplicationStart()

c# asp.net-mvc forms-authentication web-config global-asax

5
推荐指数
1
解决办法
712
查看次数