ASP.Net MVC Action

Action方法输出返回值:ActionResult,返回控制器结果对象,慧姐或间接继承自ActionResult类型

ViewResult:使用View() 既可以指定一个页面,也可以指定传递的模型对象,如果没有指定参数表示返回与Action同名的页。

ContentResult:使用Content(string content)返回一个原始字符串

RedirectResult 使用Redirect(string Url) 将结果转到其他Action

JsonResult:使用JSON(object data)将data序列化为json数据并返回

JsonRequestBehavior.AllowGet:可以处理Get请求,一般会结合客户端的ajax请求进行返回。

 ViewResult  返回指定的或默认的视图模板  return View()

 PartialViewResult 返回指定的或默认的部分视图模板 return PartialView()

RedirectToRouteResult 将Http 301或302 重定向发送给一个动作方法或特定的路由条目,根据路由配置生成一个URL   RedirectToAction   RedirectToActionPermanent RedirectToRoute RedirectToRoutePerment

RedirectResult  将Http301 或302重定向发送给一个特定的URL RedirectToRoutePermanent

ContentResult 返回原始的文本数据给浏览器,随意的设置文本类型头部  Content

FileResult  将二进制数据直接传送给浏览器  File()

JsonResult 将一个.Net对象序列化成JSON格式,并发送给响应。这种响应经常使用WebAPI

JavaScriptResult 发送一个由浏览器执行的JavaScript源代码片段 JavaScript

HttpUnauthorizedResult 将响应的Http状态码设置为401(意为“未授权”),这回引发当前的认证机制(表单认证或Windows认证)要求范文这进行登录

HttpNotFoundResult  返回一个Http的404 未找到错误

EmptyResult 什么也不做

重定向

对浏览器进行重定向的最基本的方式是调用Redirect方法,它返回RedirectResult类的一个实例。

过滤器

在 System.Web.Security 命名空间中

通过FormsAuthentication.Authenticate(username,password) 方法来判断用户名和密码输入是否正确

如果正确,则通过如下方法保存用户至Cookies中

FormsAuthentication.SetAuthCookie(username, false);

密码认证:

1.添加认证配置信息

<system.web>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880">
<credentials passwordFormat="Clear">
<user name="tt" password="tt123"/>
<user name="sa" password="123"/>
</credentials>
</forms>
</authentication>
</system.web>

2.在首页控制器类中加入[Authorize]

namespace Filters.Controllers
{
[Authorize]
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
}
}

3.编写登录界面 ~/Account/Login

控制器和视图以及提交数据处理方法

public class AccountController : Controller
{
// GET: Account
public ActionResult Index()
{
return View();
}
public ViewResult Login()
{
return View();
}

[HttpPost]
public ActionResult Login(string username, string password, string returnUrl)
{
bool result = FormsAuthentication.Authenticate(username, password);
if (result)
{
FormsAuthentication.SetAuthCookie(username, false);
return Redirect(returnUrl ?? Url.Action("Index", "Home"));
}
else
{
ModelState.AddModelError("","用户名或密码不正确");
return View();
}
}
}

模型:

public class UserInfo
{
public string UserName { get; set; }
public string Password { get; set; }
}

视图:

@model Filters.Models.UserInfo

@{
ViewBag.Title = "Login";
}
<div class="panel">
<div class="panel panel-heading">
<h3>用户登录</h3>
</div>
<div class="panel panel-body">
@using (Html.BeginForm())
{
<div class="form-group">
<label>用户名:</label>
@Html.TextBoxFor(m => m.UserName)<br/>
<label>密 码:</label>
@Html.PasswordFor(m => m.Password)
</div>
<div class="form-group">
<input type="submit" value="登录" class="btn btn-primary" />
</div>
}
</div>
</div>

 过滤器类型说明:

认证过滤器  IAuthenticationFilter 最先运行,在任何其他过滤器或动作方法之前,但在授权过滤器之后可以再次运行

授权过滤器 IAuthorizationFilter 默认实现 AuthorizeAttribute 在认证过后,其他过滤器活动做方法之前

动作过滤器 IActionFilter 默认实现 ActionFilterAttribute 在动作方法之前及之后运行

结果过滤器 IResultFilter 默认实现 ActionFilterAttribute 在动作结果被执行之前和之后运行

异常过滤器 IExceptionFilter HandleErrorAttribute 仅在另一个过滤器动作方法或者动作结果跑出异常时运行。

[Authorize(Users="sa,tt")] 限定授权用户

AuthorizeAttribute属性:

名称:Users  类型:string  说明:一个逗号分隔的用户名列表,允许这些用户访问该动作方法

           Roles             string            一个都搞分隔的角色列表,为了访问该动作方法,用户必须至少是这些角色之一。

 

posted @ 2020-09-05 17:29  丹心石  阅读(180)  评论(0编辑  收藏  举报