相关疑难解决方法(0)

在某些情况下如何覆盖/更改FormsAuthentication LoginUrl

有没有办法动态更改FormsAuthentication的LoginUrl?我所拥有的是受FormsAuth保护的整个站点,但对于子文件夹中的某些页面,我想将用户带到不同的登录页面,并让FormsAuth处理ReturnUrl的内容.这是可能的还是我必须为子文件夹案例编写自己的重定向代码?

这是一个示例布局:

   ~/LogOn1.aspx
   ~/Protected1.aspx
   ~/Protected2.aspx
   ~/Subfolder/
   ~/Subfolder/LogOn2.aspx
   ~/Subfolder/NotProtected.aspx
   ~/Subfolder/Protected3.aspx
Run Code Online (Sandbox Code Playgroud)

所以我的web.config看起来像:

 <forms loginUrl="~/Splash.aspx" ... />
Run Code Online (Sandbox Code Playgroud)

所有受保护的*.aspx页面都有

 <deny users="?">
Run Code Online (Sandbox Code Playgroud)

我想要的是,如果用户是匿名的,〜/ Subfolder/Protected3.aspx将被重定向到〜/ Subfolder/LogOn2.aspx.

我确实尝试在〜/ Subfolder/web.config中放置一个精简版的web.config:

<?xml version="1.0"?>
<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl="~/Subfolder/LogOn.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="~/Subfolder/default.aspx" requireSSL="true" cookieless="UseCookies" enableCrossAppRedirects="false" />
      </authentication>
      <authorization>
         <deny users="?" />
      </authorization>
   </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但所有这些都是我的错误:

在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.

我认为使Subfolder目录成为一个应用程序会导致更多的问题,但也许我错了.如果它是一个应用程序,是不是将〜/ Subfolder中的所有代码与父应用程序的其余部分分开?

.net asp.net forms-authentication

17
推荐指数
3
解决办法
3万
查看次数

FormsAuthentication LoginUrl

我在这里完全失败了.这工作得早.我有一个使用表单身份验证的MVC3应用程序.在web配置中,我有以下内容:

<authentication mode="Forms">
  <forms loginUrl="~/Login/Index" timeout="2880"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,当重定向时,或者在检查FormsAuthentication.LoginUrl时,它仍然使用默认的/ Account/Login.哪个不存在.为什么web.config不会覆盖这个?

asp.net-mvc forms-authentication asp.net-mvc-3

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

asp.net mvc添加到AUTHORIZE属性

如何创建自定义属性以扩展MVC中的现有Authorize属性?

asp.net asp.net-mvc attributes

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