Soo*_*ead 4 c# login asp.net-mvc-3
我正在学习ASP.NET MVC3,我现在正在研究用户处理.我的第一个问题是(我知道在其他主题中有很多关于这个主题的内容,我只是找不到一个很好的MVC3)我希望登录页面重定向我来自我的地方,或者我从哪里重定向.在PHP中,也许我会将这个url添加到查询字符串中.但我需要一种方法以某种方式自动执行此操作,这是一种非常常见的设计模式,我想知道是否有"内置"方式来执行此操作.
什么是最干净,或首选的方式?
此外,当我重定向到登录页面时,这将是检查和存储我重定向的URL的最佳方式?我会在请求对象中检查引用者并将其在URL中吐出"?redirect = protected.html",但我甚至不确定如何正确执行此操作.
关于这个问题的任何建议将不胜感激.
MVC的工作方式与ASP.NET相同.
如果您使用表单身份验证,那么很多问题都将为您解答.
在Web Config中找到所说的行,authentication="Windows"然后将其更改为Forms
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
MVC 3实际上会为您提供Account/LogOn路由作为MVC 3模板项目的一部分(检查您的模型,看看您是否有一个被调用AccountModel).
然后,您只需添加Authorization拒绝所有用户到您的网站:
<authorization>
<deny users="?"/>
</authorization>
Run Code Online (Sandbox Code Playgroud)
默认情况下,这会将访问您网站的任何人发送到您的登录信息.
因此,在验证登录凭据是否正确后,您将设置AuthCookie与ASP.NET相同:
FormsAuthentication.SetAuthCookie(userName, false);
Run Code Online (Sandbox Code Playgroud)
从此形式,您可以重定向到您想要的任何地方.
重定向回到你来自的地方:
FormsAuthentication.RedirectFromLoginPage(userName, false);
Run Code Online (Sandbox Code Playgroud)
不要忘记另一个有用的陈述:
FormsAuthentication.SignOut();
Run Code Online (Sandbox Code Playgroud)
如果没有身份验证,站点将不允许您在任何地方访问,直到您登录,因此CSS将停止工作.
我添加的位置以确保不会发生这种情况如下:
<location path="Content">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6427 次 |
| 最近记录: |