有没有办法动态更改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中的所有代码与父应用程序的其余部分分开?
我在这里完全失败了.这工作得早.我有一个使用表单身份验证的MVC3应用程序.在web配置中,我有以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" timeout="2880"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,当重定向时,或者在检查FormsAuthentication.LoginUrl时,它仍然使用默认的/ Account/Login.哪个不存在.为什么web.config不会覆盖这个?
如何创建自定义属性以扩展MVC中的现有Authorize属性?