天天看点

ASP.net MVC 中Security.FormsAuthentication验证用户的状态(匿名|已登录)

编号:ylbtechASPnetMvcSecurity100010010

1,功能描述

   ASP.net MVC下利用 System.Web.Security.FormsAuthentication类,验证用户的状态(匿名|已登录 )

以项目为例:在视图和和区域里的视图,分别都列举俩个页面(允许匿名和不允许匿名)。

2,技术与环 境

  ASP.net MVC下System.Web.Security.FormsAuthentication类,验证用户的状 态(匿名|已登录)

3,数据库设 计

 无

4,功能截图

 4.1,匿名状态下()

  4.1.1  /Home/Index  网站首页

ASP.net MVC 中Security.FormsAuthentication验证用户的状态(匿名|已登录)

  4.1.2  /Account/Login  登录

ASP.net MVC 中Security.FormsAuthentication验证用户的状态(匿名|已登录)

  4.1.3  只要是匿名用户,单击加“[NM]”修饰的地址,都会跳转到/Accout/Login页面

ASP.net MVC 中Security.FormsAuthentication验证用户的状态(匿名|已登录)

 4.2,已登录状态下

  4.2.1  /Accout/Index  用户中心

ASP.net MVC 中Security.FormsAuthentication验证用户的状态(匿名|已登录)

5,代码分析

 5.1,  /web.config  设置重定向登录页面

5.2,  /Controllers/AccountController.cs 账户管理控制器    ylb_tip:加“[Authorize]”修饰的方法拒绝匿名。

<code>using</code> <code>System.Web.Mvc;</code>

<code>using</code> <code>System.Web.Security;</code>

<code>namespace</code> <code>MvcSecurity.Controllers</code>

<code>{</code>

<code>    </code><code>public</code> <code>class</code> <code>AccountController : Controller</code>

<code>    </code><code>{</code>

<code>        </code><code>//</code>

<code>        </code><code>// GET: /Account/</code>

<code>        </code><code>[Authorize]</code>

<code>        </code><code>public</code> <code>ActionResult Index()</code>

<code>        </code><code>{</code>

<code>            </code><code>return</code> <code>View();</code>

<code>        </code><code>}</code>

<code>        </code> 

<code>        </code><code>//  GET: /Account/Login</code>

<code>        </code><code>[HttpGet]</code>

<code>        </code><code>public</code> <code>ActionResult Login()</code>

<code>            </code><code>// 如果是登录状态,则条转到个人主页</code>

<code>            </code><code>if</code> <code>(Session[</code><code>"Username"</code><code>] !=</code><code>null</code><code>)</code>

<code>            </code><code>{</code>

<code>                </code><code>return</code> <code>RedirectToAction(</code><code>"Index"</code><code>);</code>

<code>            </code><code>}</code>

<code>            </code><code>else</code>

<code>                </code><code>return</code> <code>View();</code>

<code>        </code><code>// Post: /Account/Login</code>

<code>        </code><code>[HttpPost]</code>

<code>        </code><code>public</code> <code>ActionResult Login(</code><code>string</code> <code>username,</code><code>string</code> <code>userpass)</code>

<code>            </code><code>if</code> <code>(username ==</code><code>"sunshine"</code> <code>&amp;&amp; userpass ==</code><code>"m123"</code><code>)</code>

<code>                </code> 

<code>                </code><code>//创建身份验证票证,即转换为“已登录状态”</code>

<code>                </code><code>FormsAuthentication.SetAuthCookie(username,</code><code>false</code><code>);</code>

<code>                </code><code>//存入Session</code>

<code>                </code><code>Session[</code><code>"Username"</code><code>] = username;</code>

<code>                </code><code>//如果是跳转过来的,则返回上一页面</code>

<code>                </code><code>if</code> <code>(!</code><code>string</code><code>.IsNullOrEmpty(Request[</code><code>"ReturnUrl"</code><code>]))</code>

<code>                </code><code>{</code>

<code>                    </code><code>string</code> <code>returnUrl = Request[</code><code>"ReturnUrl"</code><code>];</code>

<code>                    </code><code>return</code> <code>Redirect(returnUrl);</code>

<code>                </code><code>}</code>

<code>                </code><code>else</code>

<code>                    </code><code>//用户个人主页</code>

<code>                    </code><code>return</code> <code>RedirectToAction(</code><code>"Index"</code><code>);</code>

<code>                </code><code>ViewData[</code><code>"Tip"</code><code>] =</code><code>"用户名或密码有误!"</code><code>;</code>

<code>        </code><code>// GET: /Account/Logout</code>

<code>        </code><code>public</code> <code>ActionResult Logout()</code>

<code>            </code><code>//取消Session会话</code>

<code>            </code><code>Session.Abandon();</code>

<code>            </code><code>//删除Forms验证票证</code>

<code>            </code><code>FormsAuthentication.SignOut();</code>

<code>            </code><code>return</code> <code>RedirectToAction(</code><code>"Index"</code><code>,</code><code>"Home"</code><code>);</code>

<code>    </code><code>}</code>

<code>}</code>

5.3  /Controllers/HomeController.cs  首页控制器(注:区域里面的权限原理相同,在这儿就不多介绍)

<code>    </code><code>public</code> <code>class</code> <code>HomeController : Controller</code>

<code>        </code><code>// GET: /Home/</code>

<code>        </code><code>// GET: /Home/VipIndex</code>

<code>        </code><code>public</code> <code>ActionResult VipIndex()</code>

6,示例 |讲解案例下载

请单击 “ylbtechASPnetMvcSecurity100010010”

请单击 “ASPnetMvcSecurity100010010”

本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/archive/2012/08/23/2652394.html,如需转载请自行联系原作者